php 遍历数组有多种方法,现在说说利用each来遍历的情况.
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
while (list($key, $val) = each($fruit)) {
echo "$key => $val\n";
}
这个代码很常见,大家以为一定会没问题的吧?
如果这样见呢?
$fruit = array('a' => 'apple', 'b' => 'banana', 'c' => 'cranberry');
while (list($key, $val) = each($fruit)) {
$a = $fruit;
echo "$key => $val\n";
}
是不是很意外,导致无限循环.
这是因为,将fruit赋值给a时会重置原来的数组指针.
再看下面的例子
$a = array(1,2,3);
foreach ($a AS $k => $v) $a[$k] = 2*$v;
while(list($k2, $v2) = each($a)) { echo($v2."\n"); }
在不同php版本下执行,会看到不同的结果
In PHP 5.2.0:
2
4
6
In PHP 5.2.6:
4
6
这是为什么呢?修改一下
$a = array(1,2,3);
foreach ($a AS $k => $v) $a[$k] = 2*$v;
reset($a)
while(list($k2, $v2) = each($a)) { echo($v2."\n"); }
不是不正常了。这就小技巧,建议大家以后遍历数组用foreach,如果非要用each.建议先reset一下。
if you want to wear light colors because you crave some variation
how to lose weight fast How To Match Yourself With Ed Hardy
dress up tshirt dimensions you shouldn’t keep on
pornoHow to Dress Well When Overweight