PHP坑之:foreach &
来源:互联网 发布:弘化社淘宝官方流通处 编辑:程序博客网 时间:2024/05/18 02:53
代码如下:
$a = array('a','b','c','d');foreach ($a as &$item){};print_r($a);foreach ($a as $item){};print_r($a);
输出结果:
Array( [0] => a [1] => b [2] => c [3] => d)Array( [0] => a [1] => b [2] => c [3] => c)
问题:两次foreach什么也没做,其中一个使用了&,结果导致数组内容被改变,是为什么呢?
打印详情输出一下:
$a = array('a','b','c','d');foreach ($a as &$item){};print_r($a);foreach ($a as $key => $item) {echo "{$key} => {$item} ";print_r($a);}
输出:
Array( [0] => a [1] => b [2] => c [3] => d)0 => a Array( [0] => a [1] => b [2] => c [3] => a)1 => b Array( [0] => a [1] => b [2] => c [3] => b)2 => c Array( [0] => a [1] => b [2] => c [3] => c)3 => c Array( [0] => a [1] => b [2] => c [3] => c)
原因及修正:
$a = array('a','b','c','d');foreach ($a as &$item){};//此时$item指向$a[3],即'd'print_r($a);//php官网给出的正确做法是//unset($item);//foreach 下标从0到3,每次循环时取下标赋值给$key,取value赋值给$item,而$item经过上面的循环指向$a[3]foreach ($a as $key => $item) {//每次都修改$item的值(也就是$a[3]的值)为当前下标所指的值:a,b,c;直到最后第n个和第n-1个值相等echo "{$key} => {$item} ";print_r($a);}
阅读全文
0 0
- PHP坑之:foreach &
- php之foreach语句
- PHP踩坑之路之foreach引用赋值
- php之foreach遍历数组
- php foreach嵌套的坑
- PHP foreach变量的坑
- 深入理解PHP原理之foreach
- php foreach
- PHP foreach
- php foreach
- PHP foreach
- php foreach()
- php foreach
- foreach.php
- php foreach
- php foreach
- php foreach
- mybatics 之<foreach></foreach>
- AngularJS-5-事件绑定
- Zookeeper jps没有QuarumPeermain但是运行启动命令时,总是报已经启动
- 我的雅思8分半个月详细复习方法
- servlet
- IDEA操作MySQL数据库乱码问题解决方案
- PHP坑之:foreach &
- java中成员变量为什么需要初始化
- java中的i++和++i
- 使用window live writer 解决写博客图片不能粘贴
- 软件开发的过程中, 一定需要简单设计?
- log4j 异步配置
- python中的os操作文件,文件路径
- socket-netfilter---set&getsocket
- Mybaties中总结《三》优化Mybaties中的配置文件