3

所以我花了 2 个小时试图解决这个问题,尽可能减少代码以隔离问题,但我无法解决这个问题。

所以我有这个代码:

$arr['key']['name'] = array("one", "two", "three");

$counter = 0;
do
{
    $cur = current($arr);

    $k = key($arr['key']['name']);
    next($arr['key']['name']);
}while($k !== null);

这是一个永无止境的循环。出于某种原因,在遍历了所有 $arr['key']['name'] 值之后,key() 不再返回 NULL,而是再次返回 0。删除 $cur = current($arr); 然而解决了这个问题。根据php手册current()根本不影响数组指针。现在我知道复制一个数组会重置它的指针,但是没有复制,如果有 $k 会一直为零,而不是从 0 到 2 然后重置回 0。

4

2 回答 2

4

current() 不会移动您使用它的数组的数组指针,但您在不同的数组上使用它。它正在重置嵌套数组的指针。

于 2012-04-10T04:55:38.610 回答
2

你为什么不这样做呢?

代码 :

foreach ($arr['key']['name'] as $k)
{
    // do something with $k

}
于 2012-04-10T04:54:01.570 回答