PHP 5下foreach引用导致程序出错
2011-06-06 09:39
363 查看
原文地址: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(临时变量);
今天和同事在调试一段代码时,死活找不出哪里出错,后来一步一步找,在一个看似不可能出问题的地方出问题了,代码类似下面这样:
$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(临时变量);
相关文章推荐
- PHP中使用foreach和引用导致程序BUG的问题介绍
- PHP中使用foreach和引用导致程序BUG及解决办法
- PHP中使用foreach和引用导致程序BUG的问题介绍
- PHP 数组 foreach引用导致的bug
- 因为WinRAR软件程序出错,而导致桌面的图标无法右键
- 【PHP】 foreach循环中变量引用的一道面试题
- ~结尾的文件导致程序出错
- PHP中使用foreach引用需要注意的问题
- PHP中foreach循环中使用引用要注意的地方
- vs.php 调试程序出错
- php变量存在引号导致语句出错无法执行——解决办法
- 项目中与php后台交接接口 javabean与请求返回的数据类型不匹配导致的出错
- php foreach引用赋值
- PHP的foreach中使用引用时需要注意的一个问题和解决方法
- PHP程序编译出错的理解
- JavaScript程序顺序执行导致的HTML标签无法引用
- 【Android开发经验】关于主题引用混乱导致程序运行崩溃的问题
- php在foreach中使用引用赋值&可能遇到的问题
- 05.php_pdo引用不恰当libmysql.dll导致Apache崩溃
- PHP容易出错之一:PHP数组传递是值传递而非引用传递