$animals = array('cat', 'dog', 'horse', 'elephant');
foreach($animals as $animal)
{
var_dump($animal);
next($animals);
}
上記のコードは、cat、dog、horse、elephantの出力です。私はnext
関数が$animals
の内部ポインタを動かすべきだと思ったので、代わりにこの出力を得るべきです:cat、horse。PHP:どのようにforeachループ内の配列ポインタを移動するには?
$ animalsの内部ポインタをforeachの影響を受けるように前方(後方)に移動させるにはどうすればよいですか?
EDIT 1:
マニュアルから:
foreachの内部配列ポインタに依存しているよう ループ内でそれを変更すると、予期しない動作につながる可能性があります。
それでも、これは私がする必要があると思います。
EDIT 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 ...
のアプローチは機能しません。
への参照これは実際の仕事の説明ではなく、同じxyの問題です。なぜあなたはそれを必要としますか? –
おそらく、この実装のどこかに隠れた、よりクリーンなデザインがあります。 –