位置: 编程技术 - 正文

浅谈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的安装和使用
  • 月末账务结转
  • 无形资产的摊销计入什么科目
  • 公司注销不清算可以吗
  • 招待费如何列支
  • kcleaner.exe是什么
  • 奖金发放的原则
  • php 生成opcode
  • 确保政府采购
  • 购买电脑固定资产怎么记账
  • sql数据库语句基本语法
  • 美国大学数学系排名
  • php读取文件内容的方法和函数
  • 利润表所得税费用怎么算
  • 买税盘的会计分录
  • 税前扣除 发票
  • 发票打印错误如何修改
  • 记账凭证附件粘贴
  • 资本公积可以转增资本因此称之为准资本
  • 一次性伤残补助金怎么计算
  • 装修行业小规模最高能开几个点的票
  • 幼儿园会计做账流程
  • 融资租赁业务如何高效拓展
  • 营改增对金融业税负的影响
  • 外汇收入需要缴纳增值税吗
  • 交了社保里面的钱去哪里了
  • 现金日记账退款怎么记账
  • 预付电费收到发票报销单怎么写
  • 减免的增值税要交所得税吗
  • 职工体检可以从工会经费支出
  • 已开具发票验旧
  • 企业取得土地使用权会计处理
  • 企业被收购的账务处理
  • 增值税稽查补交税会计处理
  • mysql数据库分区查询
  • windows模拟
  • xp电脑怎么样
  • ubuntu命令行怎么用
  • xp系统怎么安装网络驱动
  • win7系统如何关闭开机自动启动软件
  • Win10 Build 10586.494稳定版更新修复内容以及KB3172985补丁下载地址
  • 微软windows10正版
  • 我的第一个师父读后感
  • bootstrap3中container与container_fluid外层容器的区别讲解
  • unity监视器
  • android ashmem
  • bootstrap steps
  • android注入so
  • 上海税务办事大厅电话
  • 单位纪检员和纪检委员区别
  • 瑞典交税
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设