PHP两文件嵌套循环引用,php的循环与引用的一个坑,php循环引用_PHP教程
php的循环与引用的一个坑,php循环引用
上代码
$arr = array('a'=> 'a11',
'b'=> 'b22',
'c'=> 'c33',);foreach ($arr as $k=>&$v){//Do somethind
}foreach ($arr as $k=>$v){var_dump($v);
}
这样的代码, var_dump 会输出什么? 各位可以试试, 答案
string(3) "a11"
string(3) "b22"
string(3) "b22"
结果里, 第三行变成了 key='b' 的value. 问题就出在第一个循环的引用.
今天就踩到了一个这样的坑, 查问题用了很久. 简单来说, foreach循环使用的引用, 循环结束后有所保留. php.com 着重写了:
Warning
Reference of a $value and the last array element remain even after the foreach loop. It is recommended to destroy it by unset().
对于上面这个例子, 第一个循环结束后, $v引用仍然存在. 由于两个循环的变量命名一致, 第二个循环开始, $v 每次都会被赋值. 直到最后, $v 被设置成了
前一个元素的值.
原理很简单, 文档写的明明白白. 但如果工作中遇到相关的bug是很坑的, 定位需要很久. 还得需要写码的时候就注意:
1. 减少引用的使用
2. 如果需要在foreah使用引用, 应该用函数将封装起来
http://www.bkjia.com/PHPjc/1098446.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/1098446.htmlTechArticlephp的循环与引用的一个坑,php循环引用 上代码 $arr = array ( 'a'= 'a11', 'b'= 'b22', 'c'= 'c33', ); foreach ( $arr as $k = $v ){ // Do somethind } foreach ( $arr as...
本条技术文章来源于互联网,如果无意侵犯您的权益请点击此处反馈版权投诉
本文系统来源:php中文网
PHP两文件嵌套循环引用,php的循环与引用的一个坑,php循环引用_PHP教程相关推荐
- python两层循环 循环完整体一个_Python编写循环的两个建议 | 鹅厂实战(文末有福利)...
循环是一种常用的程序控制结构.我们常说,机器相比人类的最大优点之一,就是机器可以不眠不休的重复做某件事情,但人却不行.而**"循环"**,则是实现让机器不断重复工作的关键概念. 在 ...
- C++ 基础 : 函数重载、引用、内联函数、auto、范围for循环
函数重载 引用 内联函数 auto 范围for循环 函数重载 C++中引入了一个新特性,函数重载. 在同一个作用域下,对于相同的函数名,函数的参数不同,不同类型的参数顺序不同,参数的个数不同,都可以形 ...
- for循环如果先--_乐字节Java循环:循环控制和嵌套循环
乐字节小乐上次讲完了Java反射,接下来小乐给大家讲述Java循环. 循环有以下四部分: Java循环 一.循环控制 1. do..while 直到型 ( 先执行后判断) ,结构为: 先执行循环体,后 ...
- 互相引用 spring_听说你还不知道Spring是如何解决循环依赖问题的?
作者:Vt 前言 Spring如何解决的循环依赖,是近两年流行起来的一道Java面试题. 其实笔者本人对这类框架源码题还是持一定的怀疑态度的. 如果笔者作为面试官,可能会问一些诸如"如果注入 ...
- matlab在循环中保存jpg格式_Matlab如何循环读取文件
循环读取图片第一种方法①List =dir('*.jpg'); %如需其它图片格式支持,可以自己[重载dir()]函数,实现查找所有图片文件的功能, %如果图片是其它路径,可以用 ["路径& ...
- 手册中数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留的理解
数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留.建议使用 unset() 来将其销毁. Note: foreach 不支持用"@"来抑制错误信息的能力. ...
- Java头文件找出循环依赖_Node.js 如何找出循环依赖的文件?如何解决循环依赖问题?...
本文重点是讲解如何解决循环依赖这个问题.关心这个问题是如何产生的,可以自行谷歌. 如何重现这个问题 // a.js const {sayB} = require('./b.js') sayB() fu ...
- Linux按列合并两文件,列的拼合
Linux按列合并两文件,列的拼合 Linux按列合并两文件,列的拼合_苏冉旭的博客_百度空间 Linux按列合并两文件,列的拼合 awk 和 cut 都能把一个多列文件差分成单列文件,那么反过来也可 ...
- java中出现循环问题如何解决_java如何解决循环引用
Excel 循环引用产生的原因及解决方法 来源:excel 格子社区 我们打开 ... (Garbage Collection Thread) , 来跟踪每一块分配出去的内存空间, Java 虚拟机 ...
最新文章
- 去一家小公司从0到1搭建后端架构,做个总结!
- Jenkins + sonarqube集成实现发布代码审计
- 20181023 上课截图
- selenium之如何等待页面元素加载完成
- DOS命令解决端口冲突问题
- DNN:LSTM的前向计算和参数训练
- 文档过期打不开怎么办_4 个超实用金山文档小技巧,很强大也很简单,赶紧收藏!...
- Python(24)-面向对象3-可迭代类对象Pokemon
- ASN.1编解码:asn1c的基本使用
- django 外键_Django 文档解读 - 模型层(1)
- JavaScript编辑器推荐
- 迅雷beat下载为php,迅雷beta版本下载
- Spyder单步调试
- Unlocking Information in the Microsoft Office System Using XML
- 用友U8案例实验应收管理后台配置
- Windows+Anaconda+tensorflow+keras深度学习框架搭建--reproduced
- ChatGPT横空出世,让人们看到了AI的更大创造力,聚光灯再度打到了OpenAI的身上
- MAC visio的替代品Omnigraffle+激活许可证
- 教你如何实现一个完美的移动端瀑布流组件(附源码)
- mac上的ssh连接工具
热门文章
- Mac下载配置aria2和baidudl
- Android内核开发:在源码树中添加新的app应用
- Android5.1/7.1 Selinux JNI访问新增/dev/xxx设备节点
- tensorflow之add_n
- 扑克牌图片一张一张_扑克牌玩法 | 简单易上手的扑克游戏,重点是你没玩过!...
- ios 怎么判断字符串的字节数_如何用IOS判断字符串是不是纯数字
- python k线顶分型_顶分型底分型代码
- 服务器硬件 做raid操作 ubuntu linux做raid
- spring学习--bean--普通bean与工厂bean(FactoryBean)区别
- 数据结构by王卓老师