请考虑此代码
var_export ($dates);
while (list($key, $date) = each($dates))
{
echo("current = ".current($dates));
echo("key = " . key($dates));
}
结果是
Array
(
[1359928800] => 1359928800
)
current =
key =
我预计应该返回1359928800
,我错了?
答案 0 :(得分:7)
使用数组时,有一个不同的古老构造用于处理迭代:foreach(documentation here)。
我建议以这种方式迭代数组。它更容易阅读,几乎不可能出错。此外,您不必担心如警告here中所述,可能会以无限循环结束。
<?php
var_export($dates);
foreach($dates as $key => $value) {
echo("current = ".$value);
echo("key = ".$key);
}
答案 1 :(得分:0)
为什么不使用$key
和$date
?
while (list($key, $date) = each($dates))
{
echo("current = ".$date); // 1359928800
echo("key = " . $key); // 1359928800
}
答案 2 :(得分:0)
原因是each
已经推进指针。
从数组中返回当前键和值对并使数组光标前进。
因此在循环内current
引用 next 元素。在你的情况下,没有下一个元素,所以它是false
。您应该使用$key
和$date
或更好,使用foreach
,就像已经建议的那样。