【php】配列を複数条件で検索、絞り込みする方法メモ
大した話じゃないけどメモ。
やりたいことは、配列から条件で絞り込むみたいなこと。
array_filter使えばよいみたい。
// 検索対象のリスト $items = [ ["name" => "田中", "gender" => "woman"], ["name" => "高橋", "gender" => "woman"], ["name" => "亀井", "gender" => "woman"], ["name" => "櫻井", "gender" => "man"], ["name" => "松本", "gender" => "man"], ["name" => "大野", "gender" => "man"], ]; // 検索条件 $conditions = [ "gender" => ["woman"], ]; // 検索処理 $func = function($conditions) { return function($value) use($conditions) { return in_array($value["gender"], $conditions["gender"]); }; }; // 検索実行 $result = array_filter($array, $func($conditions)); // 結果 print_r($result); /* => Array ( [0] => Array ( [name] => 田中 [gender] => woman ) [1] => Array ( [name] => 高橋 [gender] => woman ) [2] => Array ( [name] => 亀井 [gender] => woman ) ) */
ついでに、call_user_func使って即時関数ぽい書き方もできるみたい
・・・ // 検索条件 $conditions = [ "gender" => ["woman"], ]; $result = array_filter($items, call_user_func(function($conditions) { return function($item) use($conditions) { return in_array($item["gender"], $conditions["gender"]); }; }, $conditions)); ・・・
以上です。