位置: 编程技术 - 正文

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

  • 增值税发票网上勾选平台
  • 如何计提当月的个人所得税?
  • 自然人系统怎么申报个人所得税
  • 增值税销项抵扣报税后有效期是多长时间
  • 增值税抵扣不够怎么解决
  • 购销合同签定有法律效力吗
  • 环保专项资金可以转让吗
  • 酒店代金券怎么做账
  • 原材料验收的重要性
  • 企业代扣代缴的个人所得税应通过税金及附加科目核算
  • 公司购买电脑费用怎么报销
  • 发票开具提示
  • 关联企业税收
  • 工会经费税务局怎么收
  • 代扣代缴个人所得税税率表
  • 营改增之后还有营业税金及附加吗
  • 行政事业单位会计基础工作规范
  • 销售坚果税率多少
  • 应收账款减值准备可以税前扣除吗
  • 企业债务追诉期几年
  • 计入成本的费用包括
  • 所得税免税项目
  • 企业研发费用税前抵扣
  • 科研费用拨款如何记账?
  • 外观设计专利费减
  • ’sass_binary_site‘ is not a valid npm option问题的产生原因及解决办法
  • 报销金额和发票金额不一致怎么做账
  • 浏览器下载量排名第一的是
  • 员工离职的类型
  • 逾期未收回包装物押金增值税
  • 融资租赁售后回租账务处理
  • 应收挂账太久有什么税务风险
  • php实现的功能
  • 机器学习篇-指标:AUC
  • 前端底层架构是什么意思
  • 电梯安装行业分类
  • 外贸企业账务处理方法
  • 进项税没入账补入账分录
  • 持有待售资产属于
  • 进项税额加计扣除5%账务处理
  • 特殊工种人身安全责任书
  • 折扣折让的会计分录
  • 工会经费怎么计算缴纳
  • 劳务报酬所得与工资薪金所得纳税的区别
  • 金蝶专业版数量金额明细账设置
  • 计提坏帐包含其他收入吗
  • 会计里的管理费用包括什么
  • 购货方发生退货的会计分录
  • 年终奖政策,提成怎么算
  • 低值易耗品怎么摊
  • 堤防维护费税率
  • 什么是存货周转天数
  • 内账收入按含税还是不含税入
  • 存贷款利率计算公式
  • 流动负债占比低什么意思
  • 银行存款利息计算器在线计算器
  • 企业利润率如何计算公式
  • 企业增资的流程
  • windows 配置
  • 自动软件脚本
  • MySQL 5.7 mysql command line client 使用命令详解
  • win8的应用商店在哪
  • win1010卸载
  • ubuntu20.04怎么用
  • xp从装系统
  • win7系统打开服务
  • WIN10系统中软件打开找不到网络共享盘
  • win10预览版绿屏重启解决
  • [置顶] 《借.住.情.缘》
  • 模拟监控app
  • 批处理常用命令总结
  • relative absolute无法冲破的等级问题解决第1/3页
  • unity3d音效
  • android profiler内存分析
  • linux定时执行任务
  • 基于javascript的毕业设计
  • node搭建项目
  • JavaScript+html5 canvas绘制的小人效果
  • [置顶]津鱼.我爱你
  • 税是每个人都要交的吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设