【发布时间】:2014-07-27 06:24:21
【问题描述】:
有谁知道为什么下面的代码:
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);
}
}
}
挂起操作系统(就像进入无限循环一样)。
但是在“if”条件下,运算符 ||改为 && 如下:
if ($new == $old && $new_val !== $old_val)
一切正常。
|| 有什么问题在这段代码中?
【问题讨论】:
-
你能发布
$_POST和$info的例子吗? -
它不是无限的,但可能只是很长。
$_POST和$info中有多少项? -
你也可以发布 $change_log 的 var_dump 吗?试试看程序运行时cpu的使用情况?
-
在帖子和信息中少于 50 项。因此它们并不大,我正在等待系统“解挂”大约 10 分钟。
-
您可以将第二个循环替换为:array_key_exist 检查:array_key_exist($new, $info)
标签: php foreach infinite-loop