可以通过在$value 前添加&来修改数组的元素。此方法将以引用赋值而不是拷贝一个值。
正常情况下在循环体外打印$arr是跟循环前一样的。
当使用了 & 引用后,在循环体中只是对$v进行了操作和赋值时。foreach的引用循环,每次循环都会让$arr的元素指向$v,所以$v和$arr的元素指向同一个地方,所以在循环体外打印$arr时发现也随着$v的变化而发生了变化。
分析:
1:foreach 是个循环赋值操作
2:&: PHP 的引用允许你用两个变量来指向同一个内容
$a =&$b :$a 和 $b 在这里是完全相同的,这并不是 $a 指向了 $b 或者相反,而是 $a 和 $b 指向了同一个地方。
补充:foreach循环总共三种形式:
foreach ($arr as $value){
//执行代码
}
foreach ($arr as $key=>$value){
//执行代码
}
foreach ($arr as &$value){
//执行代码
}