提问人:John 提问时间:4/10/2012 最后编辑:Scott C WilsonJohn 更新时间:4/10/2012 访问量:258
为什么 PHP 不断重置数组指针?
Why PHP keeps resetting the array pointer?
问:
所以我花了 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 手册,完全不影响数组指针。现在我知道复制数组会重置其指针,但没有复制,如果有$k将始终为零,而不是从 0 到 2,然后重置回 0。current()
答:
2赞
Dr.Kameleon
4/10/2012
#1
你为什么不这样做呢?
法典:
foreach ($arr['key']['name'] as $k)
{
// do something with $k
}
评论
0赞
John
4/10/2012
因为我不需要一次访问所有元素,所以我只是做了一个小例子来演示这个问题,在我的真实代码中,它不是一个循环:)
4赞
Ignacio Vazquez-Abrams
4/10/2012
#2
current()
不会移动使用它的数组的数组指针,但您在不同的数组上使用它。它正在重置嵌套数组的指针。
评论
1赞
John
4/10/2012
怎么会这样?这没有意义,在当前()的手册中没有提到它。
1赞
Ignacio Vazquez-Abrams
4/10/2012
可能是因为没有人预料到它会以这种方式使用。
0赞
John
4/10/2012
是的,但是如果它确实重置了嵌套数组的指针,为什么它在 current() 运行时不在每次迭代时都这样做,而是在整个遍历整个 $arr['key']['name'] 数组之后才这样做?
下一个:使 DIV 的行为像表格一样
评论
$cur = current($arr['key']['name']);
next($arr['key']['name']);