for vs foreach
この記事はPHPアドベントカレンダー2014の17日目の記事です (おくれましたごめんなさいごめんなさい)
突然ですがここでおもむろに1から10までの数字を表示してみたいと思います。
for($i=1;$i<=10;$i++) { echo $i . "\n"; }
何の変哲もないfor文ですね。
しかし、こう書くこともできます。
foreach(range(1, 10) as $i) { echo $i . "\n"; }
わかりやすい。
わかりやすくないですか。
私はこっちのほうが好きです!!!
ってことでベンチマークをとってみましょう。
$start = microtime(true); for($j=0;$j<=100000;$j++) { for($i=1;$i<=10;$i++) { //echo $i . "\n"; } } $end = microtime(true); var_dump($end - $start); $start = microtime(true); foreach(range(0, 100000) as $j) { foreach(range(1, 10) as $i) { //echo $i . "\n"; } } $end = microtime(true); var_dump($end - $start);
// for double(0.11627292633057) // foreach double(0.28868103027344)
デ・・・デスヨネ・・・・・・・
やっぱり効率では敵いませんが、こんな書き方もデキルヨー!ってことで。