php for循环bug,php-each-while 遍历的bug

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

php-each-while-%E9%81%8D%E5%8E%86%E7%9A%84bug

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值