博客
关于我
[PHP] foreach循环的引用赋值可能导致的问题
阅读量:660 次
发布时间:2019-03-15

本文共 497 字,大约阅读时间需要 1 分钟。

foreach($arr as &$value)

1.引用赋值符号&,是每次循环的时候,把当前元素变成地址,$value变量就是对应元素的地址,循环结束$value是一个指向最后一个元素的地址
2.当我下次循环,使用了这种方式foreach($arr as $value) ,会出现问题;foreach会把每个元素赋值给后面的$value变量
3.因此,逻辑就变成了,把每个元素修改给原数组的最后一个元素,最后一次循环会一直是前一次的结果
4.最好不用引用传递,用这种形式$arr[$key]改原数组,或者在下次循环时候换一个变量名

$nums=array(1,2,3);foreach($nums as &$v){        var_dump($v);}/*int(1)int(2)int(3)*/var_dump($nums);/*array(3) {  [0]=>  int(1)  [1]=>  int(2)  [2]=>  &int(3)}*/foreach($nums as $v){        var_dump($v);}/*int(1)int(2)int(2)*/

  

转载地址:http://emnmz.baihongyu.com/

你可能感兴趣的文章
Nat、端口映射、内网穿透有什么区别?
查看>>
nat打洞原理和实现
查看>>
NAT技术
查看>>
NAT模式/路由模式/全路由模式 (转)
查看>>
NAT模式下虚拟机centOs和主机ping不通解决方法
查看>>
NAT的两种模式SNAT和DNAT,到底有啥区别?
查看>>
NAT的全然分析及其UDP穿透的全然解决方式
查看>>
NAT类型与NAT模型详解
查看>>
NAT网络地址转换配置实战
查看>>
NAT网络地址转换配置详解
查看>>
navbar navbar-inverse 导航条设置颜色
查看>>
Navicat for MySQL 命令列 执行SQL语句 历史日志
查看>>
Navicat for MySQL 查看BLOB字段内容
查看>>
Navicat for MySQL(Ubuntu)过期解决方法
查看>>
Navicat Premium 12 卸载和注册表的删除
查看>>
Navicat 导入sql文件
查看>>
navicat 添加外键1215错误
查看>>
navicat 系列软件一点击菜单栏就闪退
查看>>
navicat 自动关闭_干掉Navicat!MySQL官方客户端到底行不行?
查看>>
Navicat 设置时间默认值(当前最新时间)
查看>>