なんでもかんでも、ループ処理に for を使う年配プログラマーの事を言うそうです。
おそらく、C言語から入った人ではないでしょうか?
たしかにPHPでは for って滅多に使いませんね。
forを見ると、無性に他の処理で置き換えたくなることもあります。
だって、forはめんどくさい場合が多いですもん。
たとえば、
max = count($a);
for (i=0;i<max;i++) { $a[i] }
こういう無駄に複雑な処理!
foreach ($a as $item) {$item}
としたほうが、扱いが非常に楽です。
楽ってことは、バグが入りにくいです。
さらに処理内容によっては、map系など各要素にコールバック関数を適用する関数を使うとさらにスマートで不具合が出にくくなります。
まぁ、foreach だけ使ってれば大抵問題なし。 便利すぎます。
whileもありますが、私はforeachじゃ面倒な場面で使う程度です。滅多に使いません。
phpマニュアルにあるような例
$i = 1;
while ($i <= 10) {
echo $i++;
}
これだと、while ではなく for を使います。
for ($i=1; $i <= 10; $i++) { echo $i;}
可読性の問題です。
まとめると
①配列をループで取り出す場合は、foreach。
②条件でループさせるる場合は、while。※初心者が意図せず無限ループさせる鬼門
③決まった回数をループさせる場合は、for。
④配列の各要素で処理するなら、集合関数。※foreachにする場合もあり
①と④は似てますが、たとえば①は途中でbreak;が行えますが、④は必ず全ループです。
あとは、スコープの違いがあるため、変数の扱い方が異なります。
ちなみに
「foreach の最中に、元の集合を追加・削除するのは禁忌事項です」
という情報を見かけたが、PHPのforeachを理解していないと思われます。
元の集合を追加・削除する時こそ、foreachが有効だし、これができるというのがforeachの特徴である。