Фильтровать и сортировать многомерный массив с несколькими значениями

У меня большой многомерный массив, похожий на ниже:

Array( [1] => Array ( [type] => blah1 [category] => cat1 [exp_range] => this_week ) [2] => Array ( [type] => blah1 [category] => cat2 [exp_range] => next week ) [3] => Array ( [type] => blah1 [category] => cat1 [exp_range] => next week ) [4] => Array ( [type] => blah2 [category] => cat2 [exp_range] => this_week ) ) 

Я хочу, чтобы иметь возможность фильтровать этот массив с несколькими фильтрами.
например. фильтрация, где category = cat1 и type = blah1 будут возвращать массивы 1 и 3.

У меня есть функция ниже, которая возвращает ключи 1,2,3, что неверно, поскольку массив 2 не имеет как cat1, так и blah1

Может ли кто-нибудь увидеть, что мне нужно сделать, чтобы заставить это работать?

Также можно было бы включить сортировку в эту функцию, если да, то как?

 function array_searcher($needles, $array) { foreach ($needles as $needle) { foreach ($array as $key => $value) { foreach ($value as $v) { if ($v == $needle) { $keys[] = $key; } } } } return $keys; }