有什麼魔力? $ data的最後一個元素髮生了變化,每個循環後都有2個元素。爲什麼數組的最後一個元素在2個foreach循環後發生了變化?
<?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
Array
(
[1] => a
[2] => b
)
Array
(
[1] => a
[2] => a
)
它的代碼變化到這後一個,該陣列將不會改變:
<?php
foreach($data as $k=>&$v) {}
foreach($data as $k=>&$v) {}
由於'&v'。即使在foreach循環之後,也會引用'$ v'和最後一個數組元素。建議使用'unset()'來銷燬它。 – AbraCadaver
我不明白,爲什麼參考更改了原始數組?我對該參考文獻沒有做任何處理 – islq