为什么current()跳过foreach()语句中的第一个数组元素?

时间:2012-12-06 00:39:29

标签: php foreach

此代码输出:1 1 1 1

我期望0 0 0 0或0 1 2 3

<?php 
$arr = array(0,1,2,3);
foreach($arr as $i)
{
    echo current($arr), ' ';
}
?>

1 个答案:

答案 0 :(得分:5)

可能的重复:Why does PHP's foreach advance the pointer of its array (only) once?

初始化数组后,您会注意到当前索引为0

$arr = array(0,1,2,3);
echo current($arr); // outputs 0

当你进入你的foreach时,它会将内部数组指针递增1,使“当前”值1

注意如何通过 reference http://php.net/manual/en/function.current.php)将数组传递给current()函数。这会导致您遇到的行为。

如果您想获得数组的密钥,可以将foreach更改为:

foreach($arr as $key => $i)
{

}