1

请考虑此代码

var_export ($dates);
while (list($key, $date) = each($dates))
{
    echo("current = ".current($dates));
    echo("key = " . key($dates));
}

结果是

Array
(
    [1359928800] => 1359928800
)

current =
key = 

我希望它应该返回1359928800,我错在哪里?

4

3 回答 3

7

使用数组时,有一个不同的不太古老的结构来处理迭代:foreach(此处的文档)。

我建议以这种方式迭代数组。它更容易阅读,几乎不可能出错。此外,您不必担心可能会陷入无限循环,如此处的注意事项中所述

<?php
var_export($dates);
foreach($dates as $key => $value) {
    echo("current = ".$value);
    echo("key = ".$key);
}
于 2013-02-05T21:22:11.243 回答
0

原因each指针已经前进了。

文档指出:

从数组中返回当前键值对并推进数组游标。

所以循环内部current指的是下一个元素。在您的情况下,没有下一个元素,所以它是false. 您应该使用$keyand$date或更好地使用foreach,就像已经建议的那样。

于 2013-02-06T09:55:53.753 回答
0

为什么不使用$keyand $date

while (list($key, $date) = each($dates))
{
    echo("current = ".$date); // 1359928800
    echo("key = " . $key); // 1359928800
}
于 2013-02-05T21:19:08.573 回答