エンジニアをリングする

プログラをミングしたり。

my web site twitter

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)

デ・・・デスヨネ・・・・・・・

やっぱり効率では敵いませんが、こんな書き方もデキルヨー!ってことで。