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

sha*_*low 6 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), ' ';
}
?>
Run Code Online (Sandbox Code Playgroud)

jch*_*apa 5

可能的重复:为什么PHP的foreach推进其数组的指针(仅)一次?

在初始化数组之后,您会注意到当前索引是0.

$arr = array(0,1,2,3);
echo current($arr); // outputs 0
Run Code Online (Sandbox Code Playgroud)

当你进入foreach时,它会将内部数组指针递增1,形成"当前"值1.

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

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

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

}
Run Code Online (Sandbox Code Playgroud)