將以下代碼打印
$variable = ['a', 'b', 'c'];
foreach ($variable as $key => &$value) {
}
foreach ($variable as $key => $value) {
}
echo "<pre />";
var_dump($variable);
echo "<pre />";
#結果
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
&string(1) "b"
}
打印出來的結果跟預期結果的不一致,這是因為在第一次的foreach中使用了引用,順其而然的$value變成了引用變量,因而$value與 $a[ 2 ]指向了同一個地址空間(共享變量值),在第二個foreach中,不斷的將$arr中的值賦給$value,進而$arr[2]的值也會跟隨者$value的變化而變化,將第二次中的$variable 打印出來的結果
array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> &string(1) "a" }
array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> &string(1) "b" }
array(3) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> &string(1) "b" }
$value值與$arr[2]值的變化