此代码输出: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), ' ';
}
?>
答案 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)
{
}