返回true后,break无法正常工作;

时间:2015-09-28 15:28:03

标签: php foreach return break

返回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的代码本身是错误的。它已得到纠正。此外,下面你会找到正确的答案。

1 个答案:

答案 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;
}

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