ここでは PHP において、配列の値に閾値を設けてフィルタリングして結果を別配列で取得するサンプルコードを掲載しています。
スポンサーリンク
foreach 文で自前でフィルタリングする
まずは、手堅く自前でフィルタリングを行うサンプルコードになります。
// 選手名と年齢の配列
$players = array('イチロー' => 10,
'ジロー' => 20,
'サブロー' => 30);
// 20歳以上の選手のみ別配列にコピーする
foreach($players as $key => $value) {
if($value >= 20) {
$result[$key] = $value;
}
}
// フィルタリング結果出力
var_dump($result);
// array
// 'ジロー' => int 20
// 'サブロー' => int 30
array_filter 関数を使用する
次に array_filter 関数を使用したフィルタリングの実装例になります。PHP では配列内のデータのフィルタリングを行うための array_filter 関数が提供されています。前述の foreach 文のようにデータとフィルタリング処理が一体となった実装方法ではなく、データとフィルタリング処理の実装を切り離すことができます。サンプルでは、無名関数を使用していますので、PHP 5.3 以降でのみ動作します。
// 選手名と年齢の配列
$players = array('イチロー' => 10,
'ジロー' => 20,
'サブロー' => 30);
// フィルターの閾値をセット
$filter_age = 20;
/*
* フィルターの条件(無名関数)をセット
* 関数のリターン値が true 場合、フィルタリング後の結果セットに格納される
*/
$filter_func = function ($value) use ($filter_age) { return ($value >= $filter_age); };
/*
* array_filter 関数でフィルタリングを行う
*/
$result = array_filter($players, $filter_func);
// フィルタリング結果出力
var_dump($result);
// array
// 'ジロー' => int 20
// 'サブロー' => int 30