|
|
具体看代码演示:- <?php
- $arr = array(1, 2, 3, 4);
- foreach ($arr as &$value) {
- $value = $value*2;
- }
- print_r($arr);
- echo "<br>";
- // $arr is now array(2, 4, 6, 8)
- //unset($value); // 最后取消掉引用
- foreach ($arr as $key => $value) {
- echo $key ."=>". $value."<br>";
- print_r($arr);
- echo "<br>";
- }
- //当没有使用unset($value)方法销毁变量,那么$arr[3]是一直在保留引用;
- //第一次循环,将2赋值给了$value,浏览器输出2,然后再打印数组$arr实际成了array(2,4,6,2);
- //第二次结束,将4赋值给了$value,浏览器输出4,然后再打印数组$arr实际成了array(2,4,6,4);
- //第三次结束,将6赋值给了$value,浏览器输出6,然后再打印数组$arr实际成了array(2,4,6,6);
- //第四次结束,将6赋值给了$value,浏览器输出6,然后再打印数组$arr实际成了array(2,4,6,6);
- ?>
复制代码
运行结果如下:
- Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )
- 0=>2
- Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 2 )
- 1=>4
- Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 4 )
- 2=>6
- Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 6 )
- 3=>6
- Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 6 )
复制代码 引用的作用是修改数组的元素,上面的代码第二个foreach实际上是在间接的给$arr[3]赋值。
|
|