【发布时间】:2018-10-05 14:57:33
【问题描述】:
<?php
$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)){
search($section, $query);
}
}
var_dump($found);
return $found;
}
if (search($sections, 'obama')){
echo 'search item found';
}else{
echo 'nothing found';
}
我写了我的问题的简化版本。基本上我试图在嵌套数组中找到一个值。我得到以下输出: bool(true) bool(false) 没有找到。为什么找到的值会从真变为假。为什么 $section == $query 时函数没有终止?
【问题讨论】:
-
您需要返回或设置在您的递归调用中找到。
return search($section, $query); -
@ArtisticPhoenix 这么简单的答案,但我用我愚蠢的思维过程把它复杂化了。非常感谢!
标签: php recursion multidimensional-array