位置: 编程技术 - 正文

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

  • 公司从业人员包括老板吗
  • 餐饮税务每个月几号报税
  • 公司组织出去旅游主持词
  • 保险经纪公司要取得什么证
  • 小规模零申报增值税
  • 房屋租赁和服务费发票的区别
  • 会计核算过程中的错误分析
  • 员工成本是员工薪资的多少倍
  • 服装厂委托物资零散加工成品如何做账呢?
  • 电子税务局里的利润表,本月金额是填累计数吗
  • 进口设备的重置成本包括什么
  • 应付职工薪酬包括公积金吗
  • 销项税额抵减会取得专用发票吗为什么
  • 固定资产出售时增值税怎么处理
  • 会计分录如何试算出来的
  • 跨省增值税专用发票可以抵扣吗
  • 公司发的物品叫什么
  • linux ssh命令用法
  • 公司章程认缴时效是多久
  • 收到苗木发票怎么做账
  • 怎么查开出去的发票原票
  • 软碟通支持uefi吗
  • 添加VPN时提示已存在
  • 分期付款买车的利息会计分录
  • 企业支付银行的贷款利息可以税前扣除吗为什么
  • 甘油三血脂高怎么办
  • .hpp是什么文件
  • 车子的保险费
  • 用支付宝支付的游戏
  • window11预览版怎么样
  • Python中如何定义一个变量
  • 出口信用保险补贴是否不征税收入
  • phpcms怎么用
  • 待核销基建支出并入哪个科目
  • 商业承兑汇票贴现会计分录
  • python导入模块的语句
  • mysql 5.7.22安装教程
  • windows 和 linux
  • 学电脑的网站
  • 租集体土地建厂合法吗
  • 发票丢失如何处理入账
  • MSSQLSERVER不同版本设置开启远程连接(sa配置)
  • 进项税抵扣的分录怎么做
  • 饭店房屋的租赁合同范本
  • 旅行社开具的发票可以作为福利费税前支出吗
  • 端午节发放的现金福利会计处理
  • 长期股权投资账务处理实例
  • 票据行为的构成要件
  • 原材料暂估的业务包括
  • 填制费用报销单怎么填写
  • t3用友年底结束怎么建下一年
  • 刚成立的公司没有五险一金
  • 会计凭证要保存多少年企业注销
  • 账簿设制的一般程序
  • sql like多个
  • mysql的主从复制模式
  • 微软在印度的投资
  • Win10系统怎么删除管理员权限
  • xp系统英文版怎么改成中文
  • 使用微软
  • 怎么才能更好的优化我的电脑
  • win8摄像头设置
  • ubuntu装eclipse
  • ssms.exe是什么进程
  • 怎么给电脑装win8系统
  • Win10预览版镜像
  • centos7ftp
  • RAVMOND.exe - RAVMOND是什么进程.有什么作用
  • win7内存检测工具
  • 微软官方解决升级问题
  • 轻松搞定琥珀甲教程
  • linux 网页
  • 巨幕prime
  • vue怎么实现多页面
  • unity图集作用
  • js右键菜单
  • javascript:void(0)点击登录没反应怎么解决
  • 怎样在微信小程序里交医保
  • 德税手卷烟海淘
  • 国税申报时间2023
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设