PHP中foreach循环中使用引用要注意的地方


Posted in PHP onJanuary 02, 2011
foreach ($array as &$row) { 
$row = explode('/', $row); 
} 
foreach ($array as $row) { 
//do something 
}

这么写,在第二个循环会出逻辑错误,加入第二个循环中do something的地方是输出$row,循环到最后一个的时候的输出是倒数第二个元素,而不是最后一个

要这么写

foreach ($array as &$row) { 
$row = explode('/', $row); 
} 
unset($row); 
foreach ($array as $row) { 
//do something 
}

或者第一个循环这么写
foreach ($array as $key => $row) { 
$array[$key] = explode('/', $row); 
}

说一下原理
第一个循环使用了引用,循环结束后,$row引用的是$array数组的最后一个元素,当开始第二个循环的时候,$row变量每次循环都会被赋一个新值,在php中,如果一个内存空间是被引用的,那么当改变它的时候是直接改变这块内存空间的值,也就是说,当第二个foreach的第一次循环,$array的最后一个元素的值就被改变为$array的第一个元素的值,第二次循环的时候,改变为第二个元素的值,倒数第二次循环的时候,被改变为倒数第二个元素值,而最后一次循环的时候得道的值必然是那个倒数第二个值
当然,如果php的for循环有作用域的话,也不会出现此问题.....

PHP 相关文章推荐
php echo 输出字符串函数详解
May 13 PHP
一个基于PDO的数据库操作类
Mar 24 PHP
php array的学习笔记
May 16 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 PHP
destoon网站转移服务器后搜索汉字出现乱码的解决方法
Jun 21 PHP
PHP概率计算函数汇总
Sep 13 PHP
CodeIgniter集成smarty的方法详解
May 26 PHP
Laravel下生成验证码的类
Nov 15 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
Jul 24 PHP
laravel框架中表单请求类型和CSRF防护实例分析
Nov 23 PHP
PHP Pipeline 实现中间件的示例代码
Apr 26 PHP
Laravel统一错误处理为JSON的方法介绍
Oct 18 PHP
PHP开发中四种查询返回结果分析
Jan 02 #PHP
linux下删除7天前日志的代码(php+shell)
Jan 02 #PHP
PHP中=赋值操作符对不同数据类型的不同行为
Jan 02 #PHP
完美实现GIF动画缩略图的php代码
Jan 02 #PHP
php实现无限级分类实现代码(递归方法)
Jan 01 #PHP
php下尝试使用GraphicsMagick的缩略图功能
Jan 01 #PHP
PHP读取XML值的代码(推荐)
Jan 01 #PHP
You might like
收音机玩机评测 406 篇视频合集
2020/03/11 无线电
linux mint下安装phpstorm2020包括JDK部分的教程详解
2020/09/17 PHP
js跨域和ajax 跨域问题的实现思路
2009/09/05 Javascript
关于js遍历表格的实例
2013/07/10 Javascript
原生JS取代一些JQuery方法的简单实现
2016/09/20 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
微信公众平台开发教程(四) 实例入门:机器人回复(附源码)
2016/12/02 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
Bootstrap学习笔记之进度条、媒体对象实例详解
2017/03/09 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
利用jqprint插件打印页面内容的实现方法
2018/01/09 Javascript
JS实现数组深拷贝的方法分析
2019/03/06 Javascript
react结合bootstrap实现评论功能
2020/05/30 Javascript
python列表操作实例
2015/01/14 Python
Python pickle模块用法实例
2015/04/14 Python
Python通过90行代码搭建一个音乐搜索工具
2015/07/29 Python
Numpy掩码式数组详解
2018/04/17 Python
如何优雅地改进Django中的模板碎片缓存详解
2018/07/04 Python
python学生信息管理系统(完整版)
2020/04/05 Python
详解django2中关于时间处理策略
2019/03/06 Python
python3实现mysql导出excel的方法
2019/07/31 Python
python实现的config文件读写功能示例
2019/09/24 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
canvas线条的属性详解
2018/03/27 HTML / CSS
印度领先的在线时尚商店:Koovs
2016/08/28 全球购物
美国社交购物市场:MassGenie
2019/02/18 全球购物
Java如何获得ResultSet的总行数
2016/09/03 面试题
传媒专业推荐信范文
2013/11/23 职场文书
教师旷工检讨书
2014/01/18 职场文书
优秀老师事迹材料
2014/02/05 职场文书
实习单位鉴定评语
2014/04/26 职场文书
PyQt5结合QtDesigner实现文本框读写操作
2021/06/11 Python
Python 中 Shutil 模块详情
2021/11/11 Python
JavaScript实现两个数组的交集
2022/03/25 Javascript
Python接口自动化之文件上传/下载接口详解
2022/04/05 Python
app场景下uniapp的扫码记录
2022/07/23 Java/Android