$animals = array('cat', 'dog', 'horse', 'elephant');
foreach($animals as $animal)
{
var_dump($animal);
next($animals);
}
上記のコードは、猫、犬、馬、象を出力します。next
関数はの内部ポインタを移動する必要があると思った$animals
ので、代わりに次の出力を取得する必要があります:cat、horse。
$ animalの内部ポインターを前方(および後方)に移動させて、foreachで影響を受けるようにするにはどうすればよいですか?
編集1:
マニュアルから:
foreachは内部配列ポインターに依存しているため、ループ内でポインターを変更すると、予期しない動作が発生する可能性があります。
それにもかかわらず、私はこれが私がしなければならないことだと思います。
編集2:
「あなたの常識」のリンクに従って、私は私の問題のより詳細な説明を提供します。これがいくつかの疑似コードです:
array $foos;
start loop of $foos
- do thing #1
- do thing #2
- do thing #3
- keep doing thing #3 while the current value of $foos in the loop meets a certain criteria
loop
実行がループの先頭に戻ると、#3によってアクセスされた最後の配列から続行する必要があります。配列は連想的であるため、for ($i = 0 ...
アプローチは機能しないことに注意してください。