Php each():数组指针不';我不能正常工作 请考虑此代码 var_export ($dates); while (list($key, $date) = each($dates)) { echo("current = ".current($dates)); echo("key = " . key($dates)); }

Php each():数组指针不';我不能正常工作 请考虑此代码 var_export ($dates); while (list($key, $date) = each($dates)) { echo("current = ".current($dates)); echo("key = " . key($dates)); },php,Php,结果是 Array ( [1359928800] => 1359928800 ) current = key = 我希望它会返回1359928800,我错在哪里了?为什么不使用$key和$date while (list($key, $date) = each($dates)) { echo("current = ".$date); // 1359928800 echo("key = " . $key); // 1359928800 } 为什么不使用$key

结果是

Array
(
    [1359928800] => 1359928800
)

current =
key = 

我希望它会返回
1359928800
,我错在哪里了?

为什么不使用
$key
$date

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

为什么不使用
$key
$date

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

在处理数组时,有一个不同的不太古老的构造用于处理迭代:foreach()

我建议以这种方式迭代数组。它更容易阅读,几乎不可能出错。此外,您不必担心在警告中提到的无限循环中结束的可能性


在处理数组时,有一种不同的不太古老的构造用于处理迭代:foreach()

我建议以这种方式迭代数组。它更容易阅读,几乎不可能出错。此外,您不必担心在警告中提到的无限循环中结束的可能性


原因是
每个
都已经向前移动指针

各国:

从数组返回当前键和值对,并前进数组光标


因此,在循环内部
current
指的是下一个元素。在您的例子中,没有下一个元素,因此它是
false
。您应该使用
$key
$date
或更好的方法,使用
foreach
,就像已经建议的那样。

原因是
每个
都已经提前了指针

各国:

从数组返回当前键和值对,并前进数组光标


因此,在循环内部
current
指的是下一个元素。在您的例子中,没有下一个元素,因此它是
false
。您应该使用
$key
$date
或更好的方法,使用
foreach
,就像已经建议的那样。

您可能还没有从以前的操作中重置数组指针。为什么不直接使用
foreach
循环呢?@impl这是最可能的解释。也许您应该将其作为答案发布。您可能还没有从以前的操作中重置数组指针。为什么不直接使用
foreach
循环呢?@impl这是最可能的解释。也许你应该把它作为一个答案发布。实际上我需要使用prev,reset,next,foreach似乎不能使用它。foreach会自动将数组指针重置为数组的开头。也就是说,在迭代之前会自动调用reset()。如果这对您不起作用,抛出的错误是什么?如果您确实在使用数组,那么这应该是可行的。。foreach是在PHP4中实现的,您使用的是什么版本的PHP?实际上我需要使用prev,reset,接下来,foreach似乎不使用它。foreach会自动将数组指针重置为数组的开头。也就是说,在迭代之前会自动调用reset()。如果这对您不起作用,抛出的错误是什么?如果您确实在使用数组,那么这应该是可行的。。foreach是在PHP4中实现的,您使用的是什么版本的PHP?