Outoverlay
@Outoverlay

Как сохранить значения в рекурсии?

Написал функцию создания древовидного меню. После чего нужно было узнавать уровень вложенности написал функцию которая возвращает кол-во вложенностей. Теперь нужно чтобы она возвращала не только кол-во вложенностей, но и массив такого типа: array( 'count' => n, 'level_ids' => array(1,2,3...)).
Дело в том что при рекурсии все данные нельзя упаковать в массив (он получается вложенным).
То есть заместо: array( 'count' => n, 'level_ids' => array(1,2,3...)) я получу: array( 'count' => n, 'level_ids' => array( array(1 => array(2=> array(3)))) Нашел вариант как использовать двойную функцию и получать сначала строку вот такого типа 1,2,3 а потом превращать в массив с помощью explode. Но... Хотелось бы отказаться от лишних функций.
  • Вопрос задан
  • 1523 просмотра
Решения вопроса 1
27cm
@27cm
TODO: Написать статус
Дело в том что при рекурсии все данные нельзя упаковать в массив (он получается вложенным).

Можно. Вот вам простой пример:

function example($n)
{
    return ($n > 0) ? array_merge([$n], example($n - 1)) : [];
}

example(5); // [5, 4, 3, 2, 1]
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
stasuss
@stasuss
быдлокодер со стажем
а глобальная переменная не пойдет? или статическая?
Ответ написан
Комментировать
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
array_push() к массиву с передачей при рекурсивном вызове..
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы