位置: 编程技术 - 正文

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

  • 非居民纳税机构都包含哪些?
  • 期初未缴税额是什么意思
  • 个税返还手续费政策
  • 税后营业利润怎么算出来的
  • 营业账簿印花税怎么交
  • 总资产报酬率的计算公式
  • 等线支付给劳务派遣单位的工资怎么做账
  • 比较优先股和普通股
  • 个人所得税扣缴申报表
  • 增值税申报时有0.1元差额,怎么申报
  • 受托代销商品和受托代销商品款怎么列示
  • 财务单子包括哪些
  • 房地产企业土地使用权入什么科目
  • 税收分类编码不对发票可以用吗
  • 嵌入式软件运行的主要流程是什么
  • 股票卖出印花税费率
  • 退税 增值税
  • 异常增值税扣税凭证
  • 工会经费征税吗
  • 有限责任公司减资的法律规定
  • 个人工资怎么缴纳个人所得税
  • 支付收购股权款如何做账
  • etc开了充值发票还可以开消费发票么?
  • 增值税抵扣凭证包括农产品收购发票
  • 认缴制下股权转让如何不交税
  • 财务报告报送与信息采集季报怎么填写
  • 模板摊销率
  • 工资是一定是月薪吗
  • 库存商品转在建工程摘要怎么写
  • 计提小规模增值税的账务处理
  • 税额差异会计分录
  • win10电脑记事本在哪
  • php
  • mmtray2k.exe有什么作用 是什么进程 mmtray2k进程查询
  • php getheader
  • PHP:imagefilledrectangle()的用法_GD库图像处理函数
  • 一般纳税人与小规模纳税人在报税方面的区别
  • css设置背景图片填充
  • 增值税留抵税额退税政策
  • 离线开票限额怎么办
  • 一般纳税人内账可以不提税吗
  • 工程公司收到工程款会计分录
  • 小规模免征增值税2023
  • 企业办理土地证需要哪些资料和手续
  • 员工借现金分录
  • 报销的注意事项
  • sqlserver的isnull
  • 注销公司详细步骤
  • 会计估计变更和政策变更有哪些
  • 税务师报名条件和要求
  • 赠送礼品怎么入账
  • 预付账款收到发票
  • 调整以前年度利息支出
  • 应付职工薪酬的工资是实发工资还是应发工资
  • 多发了工资怎么做账务处理
  • 同一个法人的两家企业可以进行互相开票吗
  • 鉴证咨询公司
  • 工程预交税金是什么意思
  • SQL Server Parameter Sniffing及其改进方法
  • MS-SQL Server 2005 其中三个版本的比较
  • window 启动
  • iis支持什么后端语言
  • Windows移动中心里没有无线网络
  • ahqinit.exe是什么进程 ahqinit是安全的进程吗
  • macbookpro客人用户
  • win10开机绿色
  • opengl文档窗口是什么
  • 原生js添加css样式
  • linux与windows
  • vue-resource + json-server模拟数据的方法
  • .nodejs
  • node.js怎么用
  • unity3d快速入门
  • jquery实现轮播图步骤
  • python中的zip()函数详解
  • Javascript字符串对象函数
  • 个人房屋出租给公司怎么开发票
  • 西安市港务区属于哪个街道办
  • 无锡电子税务局怎么修改办税人员信息
  • 回迁房有没有装电梯的
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设