foreach 使用技巧

来源:互联网 发布:淘宝网络公司 编辑:程序博客网 时间:2024/06/03 13:35

有段时间没有写博客了,主要是实验室里事情太多。今天被一个小问题纠结的了半天,不过最终还是解决了。

php里面foreach大家都知道,有两种形式。即

第一种格式遍历给定的 array_expression 数组。每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步(因此下一次循环中将会得到下一个单元)。

第二种格式做同样的事,只除了当前单元的键名也会在每次循环中被赋给变量 $key。相当于$key是数组的索引,$value是这个索引的值。

但是要注意: 除非数组是被引用,foreach 所操作的是指定数组的一个拷贝,而不是该数组本身。因此数组指针不会被 each() 结构改变,对返回的数组单元的修改也不会影响原数组。不过原数组的内部指针的确在处理数组的过程中向前移动了。假定 foreach 循环运行到结束,原数组的内部指针将指向数组的结尾。

相当于foreach是一个值传递而不是引用传递

但是我一开始没有注意到,结果就悲剧了。

本来是这样的,发现$con['checked']的值没有改变

在php5之后,可以用引用的方法传即但这很有可能引发另外一个问题,就是在其他的foreach中你也使用了&$con这个变量,这就可能会造成很多奇奇怪怪的问题而且难以发现。比我们常见的&$value这样传值。

更方便的我们可以这样传值安全无害轻松改。

0 0