位置: 编程技术 - 正文

浅谈PHP中关于foreach使用引用变量的坑(php的foreach)

编辑:rootadmin

推荐整理分享浅谈PHP中关于foreach使用引用变量的坑(php的foreach),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:php中的for循环,php中的foreach,php fork,php中for语句,php中foreach用法及参数,php中for语句,php中的foreach,php中的foreach,内容如对您有帮助,希望把文章链接给更多的朋友!

写PHP好多年,但仍然会犯低级错误,今天遇到个 foreach中引用变量时的坑,PHP版本为 5.6. 代码如下:

输出结果

一开始看到第二个 foreach 输出的结果感觉很是莫名其妙,怎么会输出两个 d_d 呢?

仔细想了想,原来因为PHP foreach 中的 $a 的作用域是整个函数的局部变量,在循环外部仍然有效,而不是被封闭在循环内的,

所以当执行第二个foreach 时的 $a 并不是新的变量,而是仍然指向 $arr 数组第5个元素的地址引用,

当第二个 foreach 在循环时实际上是在不停的给 $arr 数组的第5个元素赋值,

具体赋值情况,

浅谈PHP中关于foreach使用引用变量的坑(php的foreach)

第一次:a_a 赋值给第5个元素, 结果为: [a_a, b_b, c_c, d_d,a_a]

第二次:b_b 赋值给第5个元素,结果为: [a_a, b_b, c_c, d_d,b_b]

第三次:c_c 赋值给第5个元素,结果为: [a_a, b_b, c_c, d_d,c_c]

第四次:d_d 赋值给第5个元素,结果为: [a_a, b_b, c_c, d_d,d_d]

第五次:此时因为第五个元素已经变成 d_d 又重新把 d_d 赋值给第5个元素,结果还是为: [a_a, b_b, c_c, d_d,d_d]

解决办法:

1.尽量不使用相同的循环变量名;

2.每次使用完或再次使用前进行 unset($a); 处理,解除地址应用

还是用上面代码示例:

输出结果:

现在就正常了,这些小细节一定要注意了

标签: php的foreach

本文链接地址:https://www.jiuchutong.com/biancheng/301336.html 转载请保留说明!

上一篇:利用switch语句进行多选一判断的实例代码(怎么用switch语句)

下一篇:PHP多维数组元素操作类的方法(phpwhile循环多维数组)

  • 小规模纳税人收普票和专票有什么区别
  • 购进固定资产的安装费计入原值吗?
  • 小规模纳税人专票免税吗?
  • 总公司签合同发票由分公司开可以吗
  • 增值税发票已抵扣能否认定合同关系
  • 过桥过闸通行费会计分录
  • 物业管理水电费税率
  • 转增股本是不是缴个人所得税
  • 企业收取的租金会计分录
  • 应收账款坏账损失专项报告
  • 怎么处理善意取得的大头小尾发票?
  • 专项费用包括哪两种
  • 费用分摊怎么算
  • 合伙企业购买股票产生的收益需要缴纳税款吗
  • 建筑行业小规模企业所得税税率
  • 小微企业发放工资做账
  • 土地出让金怎么入账
  • 向客户的续期相关通知
  • 存货进项税额转出会计处理
  • 收到银行利息会计分录怎么做账
  • 生产成本可以结转到其他业务成本吗
  • win10永久激活码神key一周内
  • 查看电脑开机时间记录win10
  • 圣克鲁斯群岛海战百度百科
  • 只有高新技术企业能享受研发加计扣除吗
  • 税收滞纳金可以抵税吗
  • 公司作为股东有什么好处
  • 认缴制注册资金怎么处理账务
  • 北极熊睡觉图片卡通
  • 有限责任公司股东对公司债务承担
  • php框架yii
  • 购进食用油的会计分录
  • php获取访问者mac地址
  • 如何进行iframe框架切换
  • 差旅费住宿费专票抵扣联贴在哪里
  • phpsubstr方法参数
  • vue 动态样式
  • cmd 过滤命令
  • 收到银行承兑汇票
  • 出纳把现金存入私人账户后转公账
  • 职工食堂费用计入哪个科目
  • 公司签发银行承兑汇票的行为属于什么行为
  • 本月的费用
  • 价外费用企业所得税
  • sqlserver查询时报00bop错误
  • 合同结算属于资产吗
  • 科技项目扶持资金
  • 职工福利基金提取流程
  • 会计凭证的填制与审核实训总结
  • 零余额账户怎么对账
  • 过期食品返厂会重新打日期吗
  • 公司需要现金
  • 收到上市公司分红企业所得税减半征收的情景
  • 收到补助款的会计分录
  • 小规模纳税人增值税计算公式
  • 企业利润的构成内容
  • 购买设备怎么开专票
  • sqlserver 表分区工具
  • windows vista电脑
  • 电脑设置光盘启动方法
  • win7系统开启vt
  • linux内核驱动开发书籍
  • win10的蓝屏界面
  • linux命令行技巧
  • 用kotlin开发android
  • 从零开始咋样
  • cocos code ide 1.0.0 RC0 使用教程
  • unity基础包
  • vue自定义方法
  • Node.js中的事件循环是什么样的
  • Node.js中的construct
  • python多线程操作
  • python3gui
  • vuecli脚手架是干什么的
  • android点击事件onclick用法
  • 高性能javascript的内容简介
  • listview报错
  • 中山市地方税务局官网
  • 长期挂账的其他应付款的规定
  • 车辆购置税多久能退回来
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设