<?php
$a = array(1, 2, 3, 4, 5);
foreach ($a as $key => $elem) {
echo "$key = $elem"; echo ' = ';
var_dump(current($a));\
}
?>
実行時に得られる出力は次のとおりです。
0 = 1 = int(2)
1 = 2 = int(2)
2 = 3 = int(2)
3 = 4 = int(2)
4 = 5 = int(2)
これは私が得るべき出力だと思いますか?:
0 = 1 = int(1)
1 = 2 = int(2)
2 = 3 = int(3)
3 = 4 = int(4)
4 = 5 = int(5)
$a の for ループの前に current() を実行し、int(1) を取得します。したがって、インクリメントを引き起こしているのは foreach ループのようです。しかし、もしそうなら、なぜそれを一度だけ行うのですか?
for ループで next() を呼び出すと、インクリメントされますが、それ以外の場合はインクリメントされません。もちろん、next() は int(3) (つまり、int(2) の後の値) から始まります。