位置: 编程技术 - 正文

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

  • 一般纳税人内账税金的处理
  • 加班费计入个税吗
  • 通过固定资产科目核算
  • 车票抵扣进项税申报在哪一栏
  • 未达起征点标志
  • 利润表盈利结构分析
  • 即征即退项目的进项税额不参与加计抵减
  • 托管物资账务处理流程
  • 小规模纳税人购置税控设备
  • 公司注销实收资本怎么处理
  • 建筑业收入确认条件
  • 往年的制造费用怎么算
  • 没有对公账户的公司怎么注销
  • 房地产企业暂估成本
  • 营改增行业注释
  • 营改增账务处理举例
  • 发票金额看不清楚可以报销吗
  • 业务招待费增值税是进项税吗
  • 个人证券交易结算资金
  • 小规模企业国税怎么报税
  • 企业职工集资款的认定标准
  • 广告公司返点是什么意思
  • 全额抵扣的发票怎么申报增值税
  • 无法运行loot
  • 一个公户从农业银行开户
  • php可以连接access吗
  • 未到期责任准备金是什么意思
  • 公司为什么每年都要招人
  • php __destruct
  • 排污费应计入什么会计科
  • wrme.exe是什么
  • 酒店装修费用计入什么科目
  • yolov3简介
  • 所得税费用要结转损益吗
  • 营业执照筹建是做什么的
  • 抵账的多余款是什么科目
  • php cms
  • javascript基础笔记
  • 公司法人的分类是什么
  • 销售农产品是否交消费税
  • 税务查账后如何结转
  • sqlserver2005数据库备份
  • 印花税技术合同包括什么
  • 企业所得税弥补亏损怎么弥补
  • 长期应收款计提减值
  • 收到退回以前年度税款
  • 个人所得税汇算年收入不超过12万
  • 通行费电子发票进项税额如何填报
  • 收到所得税退税怎么做账务处理
  • 营改增后转让土地使用权怎么交增值税
  • 建筑业清包工合同范本
  • 财政补助收入怎样申报企业所得税
  • 公司支付给实习生的报酬如何税前扣除?
  • 厂房和设备折旧计入什么费用
  • sqlserver索引语句
  • mysql的min函数
  • 彻底删除sql server2019
  • MySQL数据库卸载了数据还有吗?
  • 加快Vista中多线程下载速度
  • linux arp -n
  • jquery.ui
  • cocos2dx怎么用啊
  • node.js连接mysql的数据怎么可视化
  • 如何在手机上直接买彩票
  • nodejs基础
  • javascript教程
  • settimeout和setinterval在安卓机无效
  • jquery源码解析
  • jQuery AJAX timeout 超时问题详解
  • javascript基础笔记
  • ADB not responding. You can wait more,or kill"abd.exe" process manually and click 'Restar
  • 国际税务局邮箱是多少
  • 最新印花税税目表2022
  • 什么是12366
  • 国家税务总局l
  • 资源税属于国税还是地税
  • 变更法人需要法人本人去吗
  • 营业账簿中的其他账簿包括
  • 广东电子税务局官网登录入口
  • 查册证明怎么自动生成
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设