php的foreach行为与unset()

时间:2015-08-31 13:18:56

标签: php

如果你预先取一个数组并取消其中的一个元素,那么在原始数组上调用current()会返回FALSE。有人请向我澄清这种行为。

$locales = array(
0 => 'EN',
1 => 'DE',
2 => 'AR'
);
foreach($locales as $key => $code){
if($code == 'DE'){
    unset($locales[$key]);
}
}

var_dump(current($locales)); // bool(false)
PS:我一般都是php noob和编程。

2 个答案:

答案 0 :(得分:0)

我也无法重现你的问题。它是PHP版本的问题吗?我在删除后使用PHP 5.5.9 print_r你的数组来看看它发生了什么:\

答案 1 :(得分:0)

我在你的帖子中没有看到问题......

关于你所描述的内容,它在PHP 5.2.4中可能是一种奇怪的行为,可能还有一些其他版本,如here所述。

在当前版本中似乎没有出现问题。