问题可以简要的概括为:
$arr = array(1,2,3,4,5);
foreach($arr as $key => &$row) {}
foreach($arr as $key => $row) {}
var_dump($arr);
array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => &int 4
foreach 指针问题,指针大神,求现身!
$arr = array(1,2,3,4,5);
foreach($arr as $key => &$row) {}
foreach($arr as $key => $row) {}
var_dump($arr);
array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => &int 4
foreach 指针问题,指针大神,求现身!
foreach($arr as $key => &$row) {}
unset($row); //这个不能少,为了切断数组的引用
foreach($arr as $key => $row) {}
var_dump($arr);array(5) {
[0]=> int(1)
[1]=> int(2)
[2]=> int(3)
[3]=> int(4)
[4]=> int(5)
}
foreach($arr as $key => &$row) {}//这个执行完毕后,$arr[4]是个引用,值为5
foreach($arr as $key => $row) {}//这个执行过程的意思是:每次将当前值赋值给$arr[4],在在第四次循环完毕时$arr[4]的值为4,第五次就是自己赋值自己,所以为4。
$arr = array(1,2,3,4,5);
foreach($arr as $key => &$row) {}
var_dump($arr);
echo $arr[4].'<br/>';
foreach($arr as $key => $row) {
echo $arr[4].'_';
}
var_dump($arr);
加上6楼同学的解答,就更加豁然开朗了!$arr = array(1,2,3,4,5);
foreach($arr as $key => &$row) {}
var_dump($arr);
foreach($arr as $key => $row) {
var_dump($arr);
}
array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => &int 5
int 5
array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => &int 1
array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => &int 2
array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => &int 3
array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => &int 4
array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => &int 4
array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => &int 4
$arr = array(1,2,3,4,5);
foreach($arr as $key => &$row) {}
var_dump($arr);
for ($i=0; $i < 5; $i++) {
$row = $arr[$i];
}
var_dump($arr);
同样结果