【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));
・・・以上です。