位置: 编程技术 - 正文

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

  • 购入安装设备的专用材料分录
  • 税务ukey使用教程视频
  • 债务重组计入哪项科目
  • 开私家车出差如何报销差旅费
  • 年终奖分摊到每个月
  • 贴现的费用怎么入账
  • 合并两公司的帐务怎么做
  • 甲是乙公司依法设立的分公司
  • 免征增值税的免税政策
  • 理财的利息收入计入什么科目
  • 销售税金及附加含增值税吗
  • 财务费用做什么明细账
  • 技术维护费280全额抵扣会计分录
  • 会务费税前扣除比例
  • 自产产品用于在建工程按成本价还是销售价
  • 通讯费企业所得税
  • 出口分为哪四步
  • 广告公司认定一般多少钱
  • 所得税费用一年交几次
  • 通讯费税前扣除标准
  • 定额发票存根要盖章吗
  • 子公司之间固定资产划转 增值税会计处理
  • 专项应付款会计科目代码
  • 国际货运运费的计算基础
  • 工会资助贫困大学生
  • 增值税专用发票有几联?
  • 股东分红怎么处理
  • 资产减值准备怎么影响利润
  • win10怎么设置硬盘为第一启动项
  • php字符串函数有哪些
  • 应收款减少怎么做账
  • 费用扣除制度
  • 区分不同情形
  • 抵扣进项税额的几种情况是
  • 如何用php制作表格
  • ajax向php传值
  • 购买电脑如何入账
  • 哪些农产品属于免税
  • 增值税发票认证结果通知书在哪里打印
  • 房企预缴增值税
  • 报税报错了能否下月调整
  • 财务报表怎么重新编制
  • 个税申报错了并撤销
  • 普通发票的开具规定是?
  • mysql存储语句
  • 企业购买的理财产品 亏损了,是否可以税前扣除
  • 低值易耗品的账务处理图片
  • 技术服务费可以计入成本吗
  • 合同履约成本如何设置明细科目
  • 收到的出口退税款需要并入利润总额吗
  • 刻章费用怎么说
  • 年金现值的公式是怎么推导出来的
  • 在建工程中发生的费用
  • 取得虚开
  • 资产减值损失和资产处置损益区别
  • 印花税可以去地方申报吗
  • 待报解预算收入给我转了钱是什么意思
  • 暂估入库后发票来不了会计分录
  • 不同利益主体之间的利益如何协调
  • 年度采购总额在哪个报表
  • 采用账龄分析法计提坏账准备
  • mysql的性能调优
  • linux系统中的用户大体可分为三组
  • solaris 11.4
  • oracle linux6.9
  • 提示无法启动打印作业
  • Linux中cp和scp命令的使用方法
  • window10 360
  • win7系统计算机管理在哪里
  • win7 64位旗舰版电脑鼠标如何才能设置成左手操作?设置鼠标为左手操作的方法
  • 解决VMware下64位linux系统不支持全虚拟化的办法
  • 全面了解自我,接纳和包容自我
  • 纵向导航页面
  • android floatbutton
  • js设置延时执行
  • 安卓中textview
  • 捐赠收费吗
  • 国税手工发票
  • 人人财富最新消息
  • 增值税专用发票注明的金额是含税还是不含税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设