何らかの理由で、次の手段を使用して配列をループすると、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;
}
}
どんな助けでも大歓迎です!
解決済み: exit ステートメントを追加する必要があったため、何らかの理由で消えた謎のコメントのおかげです! ただし、再帰ループを停止するには break ステートメントが不十分である理由を知ることは興味深いでしょう。