Как полностью выйти из функции с рекурсией и циклом бесконечной вложенности?

Есть функция, которая с использованием рекурсии перебирает элементы массива неограниченной вложенности на соответствие определённому критерию. Обнаружив первый попавшийся элемент, соответствующий критерию, функция должна тут же вернуть 1.
Проблема в том, что из-за рекурсии, если я пишу return 1, значение возвращается в "родительскую" копию функции, и цикл продолжается. Если я пишу break 1/2/3/4 и т. д.- я завершаю лишь конкретный цикл, по вложенности относительно текущего, а у меня их может быть хоть миллион. Есть какая-то возможность скомандовать остановку всех циклов и возвращение значения 1?

Пока нашел только проверку значения возвращаемого вызванной копией - если 1, то все вложенные копии возвращают родителю 1, пока не дойдёт до самой первой.

Есть ли какое-то универсальное решение, которое останавливает самый первый цикл (break) или команда остановки самой первой копии функции (return)?

PHP 5.6, процедурный стиль.
  • Вопрос задан
  • 6861 просмотр
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
как погружался в рекурсию - так и вылезай.
по цепочку запускал - по цепочке и выходи.
return search($whatever);
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы