6

このコードの出力: 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), ' ';
}
?>
4

1 に答える 1

5

重複の可能性: PHP の foreach が配列のポインターを (1 回だけ) 進めるのはなぜですか?

配列を初期化した直後に、現在のインデックスが0.

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

foreach に入ると、内部配列ポインタが 1 ずつインクリメントされ、「現在の」値が作成されます1

配列が参照current()によって関数に渡される方法に注意してください( http://php.net/manual/en/function.current.php )。これにより、発生している動作が発生します。

配列のキーを取得したい場合は、 foreach を次のように変更できます。

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

}
于 2012-12-06T01:02:40.610 に答える