从品牌网站建设到网络营销策划,从策略到执行的一站式服务
这篇文章主要讲解了“分析PHP中使用foreach和引用导致程序BUG产生的问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“分析PHP中使用foreach和引用导致程序BUG产生的问题”吧!
复制代码 代码如下:
$a = array(1, 2);
$b = array(11, 12);
foreach($a as &$r){
}
foreach($b as $r){
}
echo $a[1]; // 输出 12
两个的循环的本意可能是: 第一个循环需要在循环中修改元素的内容, 所以使用引用; 但第二个循环只是把 $r 当作一个临时变量. 可是, 为什么 $a[1] 的值发生了改变呢?
当对 $a 的迭代完成后, $r 是 $a[1] 的引用, 改变 $r 的值, 就是改变 $a[1]. 这时, 你可以会奇怪, 代码中并没有修改 $r, 也没有修改 $a[1] 呀?
其实, foreach 是操作的是数组的拷贝, 所以, 后一个迭代相当于:
复制代码 代码如下:
for($i=0; $i
}
为了避免这种情况, 应该在第一个迭代之后, 执行
复制代码 代码如下:
unset($r);
从当前环境中删除 $r 这个变量(引用变量).
即使不是前面的例子, 在第一个迭代之后, 仍然十分可能再执行类似的语句:
复制代码 代码如下:
$r = 123;
循环变量一般是临时变量, 同一个变量名在代码不同的地方表示不同的东西, 但变量的作用域又存在于循环之外. 这就是这种作用域规则的坏处, 加上”变量不声明即使用”的坏外, 再加上变量无类型的坏处.
所以, 在 PHP 中使用引用变量, 应该在引用使用完之后, 应该 unset(). 所有变量在使用之前应该先 unset().
感谢各位的阅读,以上就是“分析PHP中使用foreach和引用导致程序BUG产生的问题”的内容了,经过本文的学习后,相信大家对分析PHP中使用foreach和引用导致程序BUG产生的问题这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是创新互联网站建设公司,,小编将为大家推送更多相关知识点的文章,欢迎关注!
成都网站建设公司地址:成都市青羊区太升南路288号锦天国际A座10层 建设咨询028-86922220
成都快上网科技有限公司-四川网站建设设计公司 | 蜀ICP备19037934号 Copyright 2020,ALL Rights Reserved cdkjz.cn | 成都网站建设 | © Copyright 2020版权所有.
专家团队为您提供成都网站建设,成都网站设计,成都品牌网站设计,成都营销型网站制作等服务,成都建网站就找快上网! | 成都网站建设哪家好? | 网站建设地图