位置: 编程技术 - 正文

浅谈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循环多维数组)

  • 营业额超500万会罚款吗
  • 印花税进什么费用
  • 小规模纳税人出售使用过固定资产
  • 职工的困难补助计入什么科目
  • 加了油的电子发票怎么导出来
  • 全额计提坏账准备后,多久核销应收账款
  • etc预付发票可以抵税吗
  • 财务费用和应付利息的关系
  • 代办汽车过户手续
  • 增值税一般纳税人税率是多少?
  • 二手车买卖如何交税
  • 跨区经营怎么交税
  • 消费取得普通发票怎么开
  • 实收资本收到后用途
  • 营业外支出结转损益
  • 小规模餐饮业会计核算
  • 广告物料制作费公司怎么做账
  • 分票报关合票出提单怎么清关
  • 零税率购房发票
  • 劳务费增值税专用发票虚开一万元怎么补救
  • 通行费如何填报表二
  • 应纳个税的工资怎么计算
  • 单位转让专利技巧和方法
  • 带息票据贴现金额怎么算
  • 付现所得税体现在哪方面
  • 合同资产和工程存货的区别
  • 无形资产摊销完还需要报废
  • 营改增步骤
  • 在建工程增值税可以抵扣吗
  • 电商公司贷款条件
  • 听证方式有几种
  • php数组函数有哪些
  • win7无法记忆文件保存路径
  • 损益类科目包括费用类科目吗
  • Sa-Token v.1.31.0 新增拦截器 SaInterceptor 功能说明,以及旧代码迁移示例
  • php文件修改后,打开还是显示以前的页面
  • 小企业会计准则
  • php图像
  • vue实现返回顶部
  • 限定性收入跟非限定性收入的区别
  • 基于深度学习的车型识别系统(Python+清新界面+数据集)
  • 快速上手:华硕路由器的wireguard服务器
  • 前端权限控制实战
  • 搅拌机属于什么费用
  • 应收账款项目的金额公式
  • 迭代器实现原理
  • 按工资申报的工龄怎么算
  • 三代手续费操作流程
  • 计提和结转的例子
  • 固定资产清理账户借方
  • 医院绿化方案
  • 短期流动负债计算公式
  • 外贸年底抵扣不抵税
  • 物业电费加价如何处理
  • 事业单位取暖费2023
  • 土地入账成本包括哪些
  • 期初建账明细账怎么建账
  • 往来账怎么记账
  • 固定资产领用原因
  • 子公司的财务管理方法
  • 企业的盈余公积包括哪些
  • Mysql中FIND_IN_SET()和IN区别简析
  • mysql错误代码1418
  • 苹果电脑怎么锁文件夹
  • win10设置设备
  • windows8.
  • win7系统如何修改锁屏密码
  • linux执行sh文件报错找不到
  • 如何在手机上直接买彩票
  • javascript常用类型
  • JQuery和HTML5 Canvas实现弹幕效果
  • javascript typeof id==='string'?document.getElementById(id):id解释 原创
  • js分段上传
  • unity jsonobject
  • python中的urllib
  • 黑洞数6174视频
  • 江苏省高新区地图
  • 国家税务总局商洛市税务局
  • 杭州汽车摇号中签率多少
  • 广西地方税务局2017年公务员拟录用
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设