> For the complete documentation index, see [llms.txt](https://phper.shujuwajue.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://phper.shujuwajue.com/ji-chu/liu-cheng-kong-zhi-yu-ju/foreachbian-li-zhong-de-yin-yong.md).

# foreach遍历中的引用

```php
$arr = array(1,2,3);
foreach($arr as &$v){}

foreach($arr as $v){
    echo $v;
}
```

foreach遍历中的引用分析

**第一次foreach循环**

foreach($a as &$v) {$v \*= $v;}

这里由于是引用绑定，所以相当于对数组中的元素执行:

```php
$v = &$a[0]; 
$v = &$a[1]; 
$v = &$a[2];
```

留下一个引用变量没有unset将数组最后一个变量变成引用。

**第二次foreach循环**

```php
foreach($a as $v){
     echo $v;
}
```

类似与执行：

```php
$v = $a[0]; 
$v = $a[1];
$v = $a[2];
```

![](/files/-LfnTHefS0CXAe1418YG)

![](/files/-LfnTHehGbF-o0O16Q9D)

## 如何杜绝foreach的引用隐患？

**方法一**

```php
foreach($a as $k=>&$v){
…
unset($v);
}
```

**方法二**

```php
foreach($a as $k=>&$v){
    …
}
unset($v)
```

## foreach引用的好处

节省时间、空间
