return true 后中断不能正常工作;

Break is not working properly after return true;

return 真;没有结束当前的函数循环! 这是非常基本的,但我不明白为什么 break 不起作用!

我试试这段代码:

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 中的代码本身是错误的。它已被纠正。此外,您将在下面找到正确答案。

你已经下了结论。事实上,你的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;
}

我已对您找到的原始答案进行了相同的更改。