1. 兩次循環如果不實用引用打印結果沒有任何問題
$array = ['a','b','c'];
foreach ($array as $value){}
foreach ($array as $value){}
var_dump("<pre>", $array);
//執行結果
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
string(1) "c"
}
2. 當第一次循環使用引用後會出現如下bug
代碼如下:
$array = ['a','b','c'];
foreach ($array as &$value){}
foreach ($array as $value){}
var_dump("<pre>", $array);
執行結果:
array(3) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[2]=>
&string(1) "b"
}
分析原因:
從官網的信息來看,foreach循環時,是通過移動數組內部指針來實現的。
大家可以通過在第二個數組中打印array來觀察數組數據的變化,
通過下圖可以跟直觀的看到循環流程。