位置: 编程技术 - 正文

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

  • 关税的计算公式是什么
  • 固定资产处置收入怎么报税
  • 税控服务费如何入账
  • 企业所得税为什么那么高
  • 哪个税种不需要认定就能在电子税务局申报
  • 员工住院的发票可以做账吗
  • 公司基建维修承诺书
  • 银联交易手续费
  • 土地使用管理费
  • 合并报表时抵消内部交易包含的未实现损益的影响有哪些
  • 库存材料盘亏会计分录
  • 没有资质的建筑公司怎样接工程
  • 公司和个人大额往来怎么办
  • 小规模没有进项可以开发票吗
  • 车辆施救费会计分录
  • 残疾人可以给公司带来税收优惠吗
  • 预付账款可以用应付账款借方
  • 支付广告费要交增值税吗
  • 个人私家车买卖平台
  • 实收资本减值会计处理
  • 跨年度取得发票会计分录
  • 期末调汇会计分录
  • 企业注销所得税汇算清缴
  • 预收账款可以计入
  • 会计分录是怎么样的
  • win8.1技巧
  • 树木种植公司
  • 大理石横切面
  • windows11右键菜单设置
  • 建筑劳务公司计提工资怎么做账
  • 施工企业工程结算
  • 购买农产品没有承担增值税为什么还要计算抵扣
  • kwhcommonpop.exe是什么程序
  • 现金收入如何做账务处理
  • conda配置虚拟环境
  • Http协议之Content-Type理解
  • php类的作用
  • 使用spring可以实现声明式事务吗
  • 管家婆实收资本显示负数什么原因
  • 什么经营范围可以开门票发票
  • access宏操作
  • 会计学中资本的定义
  • 营销策划协议
  • 工会经费与残保金属于什么
  • 发票的开具流程一般是?
  • 出售投资所得属于什么科目
  • 建行E信通贴现需要发票吗
  • 弃置费用预计负债的会计处理
  • 土地出让金进项税怎么算
  • 提前预支工资怎么打条子
  • 未达到起征点的税金怎么做凭证
  • 买给员工吃的零食内容怎么写
  • u盘启动盘如何克隆另外u盘
  • 配置windows server 2008
  • linux查找内容在哪个文件中
  • system idle process是什么进程(CPU的空闲率)
  • win10怎么关闭securboot
  • ubuntu虚拟机怎么改用户名
  • ulimit命令详解
  • hp是什么软件缩写
  • winxp开启远程控制
  • win7系统电脑硬盘图标变了,控制面板也打不开
  • 创游世界
  • unity总结
  • javascript 高级
  • node.js使用教程
  • JavaScript中创建文件
  • iframe transparent透明背景方法
  • 批处理脚本怎么写
  • javascript可以制作哪些游戏?
  • linux中crontab
  • javascript命名空间
  • jquery的checkbox,radio,select等方法小结
  • onInterceptTouchEvent onTouchEvent 的坑 坑死了
  • javascript常见问题
  • CA证书如何办理?
  • 江苏国税电子税务局打印机设置
  • 2021年江苏城镇医保网上缴费
  • 汽车公司户转个人户
  • 芜湖地税微机编码是什么
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设