返回true;没有结束当前的函数循环! 这是如此基本,但我不知道为什么休息不起作用!
我尝试这段代码:
function findKey($array, $keySearch) {
foreach ($array as $key => $item){
echo "$key == $keySearch";
if ("$key" == "$keySearch"){
echo 'yes, it exists';
return true;
}
else
{
if (is_array($item))
findKey($item, $keySearch);
}
}
return false;
}
return true;
在yes, it exists
被回复之后永远不会中断!
解决
来自已接受的解决方案here的代码本身是错误的。它已得到纠正。此外,下面你会找到正确的答案。
答案 0 :(得分:2)
你已经得出结论。实际上,你的return true
肯定立即结束函数(包括中断循环),但它只会结束当前函数的调用。您的解决方案是递归的,并且在else
子句中存在错误,因此完全忽略对findKey
的递归调用的结果。因此,无论在调用中发生什么都没有效果。
您在外部函数调用中看到了echo
。
我想你真正打算写的是:
function findKey($array, $keySearch)
{
foreach ($array as $key => $item) {
echo "$key == $keySearch";
if ($key == $keySearch) {
echo 'yes, it exists';
return true;
}
else {
if (is_array($item) && findKey($item, $keySearch))
return true;
}
}
return false;
}
我对您找到的原始答案进行了相同的更改。