php高级基础---php在foreach循环后留下数组的引用问题

eg:

1566187092156.jpg

result:

1566187617209.jpg

解释:

1. foreach不是块级域,数组引用结束,$key , $value  并没有释放内存

2. 当第一次引用循环结束的时候,$value指向数组最后一个元素4

3. 当第二次开始循环 (此时$value 已经是指向最后一个元素,是引用)

循环4次  数组的变化分别是:

1   ->    [1,2,3,4]

2   ->    [1,2,3,4]

3   ->    [1,2,3,3]     第三次value指向最后一个元素3    但是value是全局引用在上次循环指向了最后一个元素  所以value=3的时候 也会把最后一个元素的值改为3

4   ->    [1,2,3,3]


注意事项:

1.   foreach 实现原理有个内部指针的概念

2.   &的foreach循环结束   指针会指向最后一个元素


如何避免:

在用&foreach循环后  unset  ($value)


2019-08-01:  今天看到很多人在关注这个问题,关于鸟哥解释的php源码分析的foreach,大家感兴趣的可以去看看:http://www.laruence.com/2008/11/20/630.html