【发布时间】:2015-07-25 12:17:17
【问题描述】:
有什么魔力? $data 的最后一个元素在每个循环 2 之后发生了变化。
<?php
$data = array("1" => "a", "2" => "b");
print_r($data);
foreach($data as $k=>&$v) {}
foreach($data as $k=>$v) {}
print_r($data);
输出:[2] => 第二次 foreach 之后的 a
Array
(
[1] => a
[2] => b
)
Array
(
[1] => a
[2] => a
)
代码改成这个,数组不会变:
<?php
foreach($data as $k=>&$v) {}
foreach($data as $k=>&$v) {}
【问题讨论】:
-
因为
&v。$v的引用和最后一个数组元素即使在 foreach 循环之后仍然存在。建议unset()销毁。 -
我不明白,为什么引用改变了原始数组?我对那个参考什么都不做