Как сохранить значения в рекурсии?
Дело в том что при рекурсии все данные нельзя упаковать в массив (он получается вложенным).
Можно. Вот вам простой пример:function example($n)
{
    return ($n > 0) ? array_merge([$n], example($n - 1)) : [];
}

example(5); // [5, 4, 3, 2, 1]
а глобальная переменная не пойдет? или статическая?