配列にフィルタリングして必要な値だけ取り出す
配列を処理するならたいていの場合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)だと関数を読んでるから遅くなるのかな。