为什么发生这种奇怪的无限循环

时间:2014-07-27 06:24:21

标签: php foreach infinite-loop

有人知道为什么以下代码:

foreach ($_POST as $new => $new_val) {
    foreach ($info as $old => $old_val) {
        if ($new == $old || $new_val !== $old_val) {
            $change_log[$old] = array("old" => $old_val, "new" => $new_val,);
            var_dump($change_log);
        }
    }
}

挂起os(就像进入无限循环一样) 但是在" if"调整运算符||改为&&像这样:

if ($new == $old && $new_val !== $old_val)
一切顺利。
||有什么问题在这段代码中?

1 个答案:

答案 0 :(得分:0)

这是var_dump($change_log);需要很长时间。如果所有值都已更改,则该行执行50 * 50次,并且每次(对于每个不匹配)$change_log的长度都会增加。

因此,在最坏的情况下,它变为2500次打印$change_log长度可能为2500.

将此行var_dump($change_log);放在外部循环之后,看看会发生什么。