> 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];
```

![](https://1303647163-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfnT30woYyQ9bJF96Hh%2F-LfnTB5KYnkOx0V3e4EY%2F-LfnTHefS0CXAe1418YG%2Fforeach%E9%81%8D%E5%8E%86%E4%B8%AD%E7%9A%84%E5%BC%95%E7%94%A81.png?generation=1558862967761388\&alt=media)

![](https://1303647163-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-LfnT30woYyQ9bJF96Hh%2F-LfnTB5KYnkOx0V3e4EY%2F-LfnTHehGbF-o0O16Q9D%2Fforeach%E9%81%8D%E5%8E%86%E4%B8%AD%E7%9A%84%E5%BC%95%E7%94%A82.png?generation=1558862966484359\&alt=media)

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

**方法一**

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

**方法二**

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

## foreach引用的好处

节省时间、空间
