位置: 编程技术 - 正文

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

  • 法人私户转公户怎么操作
  • 经营范围没有的可以开票吗
  • 进口消费税应该记到什么科目
  • 固定资产原值包含进项税吗
  • 企业微信里的钱
  • 小微企业增值税优惠政策最新2023
  • 房地产企业分立会计处理及税务筹划案例解析
  • 全面解析是什么意思
  • 应收账款让售账务处理
  • 收到捐赠设备
  • 财政补助收入怎么结转
  • 虚减利润如何进行账务调整?
  • 购买存货的进口商品
  • 一般贸易免抵退税计算
  • 待认证进项税额借方余额表示什么
  • 会计利润和税务利润不一致
  • 工程税票怎么开需要交多少
  • 以前年度补交的税款进什么科目?
  • 文化事业建设费计入什么科目
  • 分公司给总公司管理费的会计分录
  • 拿提成的工资怎么算
  • 广告公司确认收入怎么写
  • 城建税上月少计提本月怎么做账
  • 工资属于劳务收入吗
  • win10怎么改通知
  • 差额增值税发票和全额增值税发票
  • 招财树的养殖方法
  • php数组可以使用哪些键名
  • 织梦采集器图片本地化
  • 知识产权作用
  • 自制半成品属于原材料还是库存商品
  • smart模板教程
  • 最新windows11安装要求
  • 前端页面设计
  • 使用ChatGPT进行AI对话
  • 增值税普通发票需要交税吗
  • 企业的应交税金一般通过什么科目核算
  • 摊销结束后
  • cms是前端还是后端
  • 车船税酌定减免
  • 公司处置汽车
  • 个税算错怎么办理退税
  • 流动资产比例大说明什么
  • 金蝶软件如何新增账套
  • 事故赔偿给谁
  • 收到缴纳个人所得税短信
  • 应付职工薪酬的含义
  • 核定征收和查账征收报税有区别吗
  • 上年度漏提折旧
  • 预计负债转回对所得税费用的影响
  • 计提工资的凭证要附单据吗
  • 有契税发票没有增值税发票
  • 个体工商户的纳税标准
  • 上月有留抵税额本月怎么申报
  • 在建工程的人工费会计分录
  • 年底未分配利润为负数怎么做分录
  • ubuntu debain
  • MySQL利用命令行工具启动和关闭的命令是什么
  • 开机蓝屏怎么回事
  • win8系统怎么安装微信
  • flashplayer不能正常运行
  • xp系统快捷启动按哪个
  • s24evmon.exe - s24evmon是什么进程 有什么用
  • windos8怎么样
  • 装win10没有版本选择提示
  • win7怎么查看电脑主板型号
  • linux 有哪些
  • javascript字面量
  • 简单解析空中三角测量的意义
  • 常用原生js兼容软件
  • vue设置背景图片全屏
  • unity如何成一组
  • angularjs简介
  • Android android.support.v4.widget.SlidingPaneLayout 侧滑示例
  • 联华超市华联超市哪个厉害
  • 厦门增值税发票查询
  • 河南省人民医院和郑大一附院哪个好
  • 补发上个月的工资怎么做账
  • 地方税务机关税率是多少
  • 苏宁易购股份转增股本
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设