原文地址:http://blog.fj18.com/post/189.html
今天和同事在调试一段代码时,死活找不出哪里出错,后来一步一步找,在一个看似不可能出问题的地方出问题了,代码类似下面这样:
- $array1 = array ( 1 , 2 ) ;
- $array2 = array ( 3 , 4 ) ;
- foreach ( $array1 as & $item ){
- }
- foreach ( $array2 as $item ){
- }
- echo $array1 [ 1 ] ;
这时得到的值是多少?我们想要的是2吧,但程序输出的却是4!
这是为什么呢?
在第一个循环完成后$array1[1] == $item,这时继续第二个循环,完成后就成了$array2[1] == $item == $array1[1],因为第一个循环是引用,所以在第二个循环后$array1[1] == $array2[1]。
一个教训,以后在使用临时变量时,2种办法至少要用上一种:
1、在使用临时变量前先unset(临时变量);
2、在用完临时变量后unset(临时变量);