此代码导致意外的数组内容更改。可能是什么原因:
<?php
$arr[] = array('a', 'b');
$arr[] = array('c', 'd');
print_r($arr);
foreach ($arr as &$processed_arr) {
}
foreach ($arr as $processed_arr) {
}
print_r($arr);
输出:
Array
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[0] => c
[1] => d
)
)
Array
(
[0] => Array
(
[0] => a
[1] => b
)
[1] => Array
(
[0] => a
[1] => b
)
)
答案 0 :(得分:1)
它确实可能是由于你之前的循环。 php中的foreach
会离开迭代
即使在循环之后,范围内的变量也是可变的(可怕,我知道)。
所以这样的代码:
$loop = [1,2,3];
foreach ($loop as &$c) {}
$c = 4;
var_dump($loop);
会产生包含loop
[1,2,4]
变量
其余的代码看起来不是它的原因。当然
status
的实施可以自由地做任何事情但是看起来它的名字
非常不可能的imo。 :)
下次发布更多上下文可能会有所帮助。试着削减它是件好事 像你已经完成的代码发布,但如果发布的代码不再公开 问题(你的问题没有),这使得猜测错误更加困难。