出于某种原因,使用以下方法循环数组会抵制其 break 语句并继续递归循环到数组的最大最后一个元素
function loop($target, $array) {
if($this) {
if(!isset($GLOBALS["loop"])) {
$GLOBALS["loop"]+=1;
$GLOBALS["arrayCount"] = count($array, COUNT_RECURSIVE);
}
}
$keys = array_keys($array);
$values = array_values($array);
for($i=0;$i<count($array);$i++) {
$GLOBALS["iteration"]+=1;
if($keys[$i] === $target) {
print "Found $target.<br>";
break;
}
if(is_array($array[$i])) {
loop($target, $array[$i]);
}
if($values[$i] === $target) {
print "Found $target.<br>";
break;
}
if($GLOBALS["iteration"] >= $GLOBALS["arrayCount"]) {
print "Looped array.<br>";
break;
}
}
任何帮助是极大的赞赏!
已解决:它需要附加一个退出语句,所以感谢神秘的评论,无论什么原因消失了!虽然,了解为什么 break 语句不足以停止递归循环会很有趣。