位置: 编程技术 - 正文

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

  • 税局退回附加税账务处理办法
  • 报废车残值款计入什么科目
  • d级企业预缴增值税什么时候可以退回
  • 中型企业什么意思
  • 技术类服务行业用不用开外经证
  • 企业购房发票可以抵税吗
  • 股权转让时的资金是什么
  • 无偿划拨资产涉税问题
  • 计提增值税小于10万元
  • 金蝶软件钩稽怎么操作
  • 增值税专票的收款人必须是个人嘛
  • 小微企业享受税收优惠个数
  • 企业年薪扣税政策
  • 如果月初忘记抄税直接开票怎么办
  • 报销单里报销内容可以写送客户烟吗
  • 什么是盈余公积和资本公积
  • windows11怎么快速截屏
  • 检验费用会计分录
  • 押金少退侵犯了哪条法律
  • 专柜公司货什么意思
  • 向境外股东分配利润怎么交税
  • 电脑显卡排行榜
  • fte文件怎么打开
  • php ftp上传文件
  • 应收账款挂账多年
  • dsm是什么文件
  • php数据库编程
  • 汽车理赔款
  • php如何调用接口
  • 公司分立土地涉税问题
  • 股权投资收益需要缴纳企业所得税吗
  • php 表单
  • 增值税核算账务处理办法
  • 贝尔纳贝
  • 激活函数总结
  • emacs scheme
  • discuz去除官方论坛
  • 远期外汇合约的特点
  • 工程服务预付款最新规定
  • python有什么用
  • mongodb bi
  • 为什么结转材料成本差异
  • 销售清单需要盖什么章子
  • 股东分红账务处理表格
  • 金税四期对企业的影响与应对
  • 私车公用属于违反什么纪律
  • 个体工商户实收资本可以填0吗
  • 应付账款从质保金扣除
  • 退回的包装物怎么做账
  • 公司的在建工程入账会计分录没有付款
  • 直接减免税款的例子
  • 销售费用和管理费用的税前扣除
  • 应收票据背书转让不终止确认如何记账
  • 应交增值税贷方余额表示什么
  • 备份还原工具怎么用
  • mysql性能极限
  • sql server安全设置
  • sqlserver 错误6005
  • centos环境搭建
  • Fedora Core 4.0 安装图解
  • window10重装显卡驱动
  • win8怎么禁用强制驱动签名
  • win10如何查看系统日志
  • qctray.exe - qctray进程 是什么文件 作用是什么
  • win8休眠如何唤醒
  • win10内置管理员账户禁用
  • win7系统打开excel文件很慢或未响应
  • win8快速启动怎么开启
  • opensuse怎么安装软件
  • 导入extjs、jquery 文件时$使用冲突问题解决方法
  • js编程代码
  • excel password recovery5.0注册码
  • javascript基础笔记
  • 计算字符串的长度的函数
  • js快速生成数组
  • javascript例题
  • javascript总结笔记
  • 用python定义一个函数
  • 上海烟草集团董事长是谁
  • 甘肃国家税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设