php的循环与引用的一个坑,php循环引用_PHP教程
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了php的循环与引用的一个坑,php循环引用_PHP教程,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1179字,纯文字阅读大概需要2分钟。
内容图文
![php的循环与引用的一个坑,php循环引用_PHP教程](/upload/InfoBanner/zyjiaocheng/190/17b5ee820f324abf84218a60419d6d43.jpg)
php的循环与引用的一个坑,php循环引用
上代码
$arr = array( 'a'=> 'a11', 'b'=> 'b22', 'c'=> 'c33', ); foreach ($arr as $k=>&$v){ // Do somethind } foreach ($arr as $k=>$v){ var_dump($v); }
这样的代码, var_dump 会输出什么? 各位可以试试, 答案
string(3) "a11" string(3) "b22" string(3) "b22"
结果里, 第三行变成了 key='b' 的value. 问题就出在第一个循环的引用.
今天就踩到了一个这样的坑, 查问题用了很久. 简单来说, foreach循环使用的引用, 循环结束后有所保留. php.com 着重写了:
Warning
Reference of a $value and the last array element remain even after the foreach loop. It is recommended to destroy it by unset().
对于上面这个例子, 第一个循环结束后, $v引用仍然存在. 由于两个循环的变量命名一致, 第二个循环开始, $v 每次都会被赋值. 直到最后, $v 被设置成了
前一个元素的值.
原理很简单, 文档写的明明白白. 但如果工作中遇到相关的bug是很坑的, 定位需要很久. 还得需要写码的时候就注意:
1. 减少引用的使用
2. 如果需要在foreah使用引用, 应该用函数将封装起来
http://www.bkjia.com/PHPjc/1098446.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1098446.htmlTechArticlephp的循环与引用的一个坑,php循环引用 上代码 $arr = array ( 'a'= 'a11', 'b'= 'b22', 'c'= 'c33', ); foreach ( $arr as $k = $v ){ // Do somethind } foreach ( $arr as...
内容总结
以上是互联网集市为您收集整理的php的循环与引用的一个坑,php循环引用_PHP教程全部内容,希望文章能够帮你解决php的循环与引用的一个坑,php循环引用_PHP教程所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。