phpで配列に対して条件で絞り込む方法を解説します。
1 2 3 4 5 |
$fruits = array( 'ichigo' => 'red', 'ringo' => 'red', 'banana' => 'yellow', ); |
上記のような果物の配列から、色が赤(red)のものだけ取得したいといった時には、array_filter()という関数がとても便利です
array_filter関数とは?
array_filter関数では配列に対して、条件での絞り込みをすることが可能です
使い方は、第一引数にフィルタリングする配列、第二引数にコールバック関数を指定します。
下記の例では、is_red()という色が赤かどうかを判別する関数を作成し、コールバック関数に指定しています。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
$fruits = array( 'ichigo' => 'red', 'ringo' => 'red', 'banana' => 'yellow', ); function is_red($fruit) { // 赤の場合のみ値を返す return($fruit == 'red'); } $red_fruits = array_filter($fruits,'is_red'); print_r($red_fruits); |
出力結果
1 2 3 4 5 |
Array ( [ichigo] => red [ringo] => red ) |
array_filterでは空を除外することもできる
array_filterは空を除外する際にも便利です。
また無名関数を使うことも可能です。
例:無名関数で空を除外する方法
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$array = array( 1 => '空じゃない', 2 => '', 3 => '空じゃない', ); $array = array_filter($array, function($data) { if (!empty($data)) { return true; } else { return false; } }); print_r($array); |
出力結果
1 2 3 4 5 |
Array ( [1] => 空じゃない [3] => 空じゃない ) |
array_filterは非常に便利な関数なので、使えるようになると配列を扱いやすくなります。