Попробуйте это
$sections = ['test', 'nesto', 'fo', 'bar', ['obama', 'tito']];
function search($sections, $query){
$found = false;
foreach ($sections as $section){
if ($section == $query){
$found = true;
var_dump($found);
return $found;
}
if (is_array($section)){
return search($section, $query); //add return here
}
}
var_dump($found);
return $found;
}
if (search($sections, 'obama')){
echo 'search item found';
}else{
echo 'nothing found';
}
Вы должны вернуть результат рекурсивного вызова.
Вывод
bool(true)
search item found
Песочница
Вы были этим [-]
близко, лол.
Также вы, вероятно, могли бы сделать это следующим образом:
$found = search($section, $query);
И позволить возврату в конце функции его перехватить.Твой выбор.Думайте об этом как о стеке вызовов функций (потому что это то, что есть).Вы должны вернуть результат обратно через стек, чтобы он мог вернуться после первого вызова (где происходит ваш вывод).
Приветствия!