配列にフィルタリングして必要な値だけ取り出す

2009/05/08 | PHPの基本

配列を処理するならたいていの場合foreachだ。ループ処理するのが簡単。でもPHPでは配列を処理するための関数がいろいろ用意されている。常識的に考えれば、それらの関数を使ったほうが早く動作するはず。

array_filterという関数を見つけた。というか前から興味を持っていた関数だ。配列をループ処理し、各値の要不要を判断して間引いてくれる関数だ。この間引き処理で、foreachを使うよりarray_filterのほうがどのくらい早くなるのか試してみた。

(1) foreachの場合
$filtered=array();
foreach($values as $value){
  if($value[‘age’]>3){
    $filtered[]=$value;
  }
}

(2) array_filterの場合
function age($value){
  if($value[‘age’]>3){
    return true;
  }else{
    return false;
  }
}
$filtered=array_filter($values,’age’);

と二つのサンプルで比べてみた。結果・・・foreachのほうが倍くらい早かった。おいおい。なんでだろ。(2)だと関数を読んでるから遅くなるのかな。

コメントを残す


守谷市(まちの情報ポータル) 無料アンケートレンタルjpForm.net