Как фильтровать двухмерный массив по значению

Как создать функцию, которая фильтрует двухмерный массив по значению?

Учитывая следующий массив:

Array ( [0] => Array ( [interval] => 2014-10-26 [leads] => 0 [name] => CarEnquiry [status] => NEW [appointment] => 0 ) [1] => Array ( [interval] => 2014-10-26 [leads] => 0 [name] => CarEnquiry [status] => CALL1 [appointment] => 0 ) [2] => Array ( [interval] => 2014-10-26 [leads] => 0 [name] => Finance [status] => CALL2 [appointment] => 0 ) [3] => Array ( [interval] => 2014-10-26 [leads] => 0 [name] => Partex [status] => CALL3 [appointment] => 0 ) 

Как я могу фильтровать массив, чтобы показывать только те массивы, которые содержат определенное значение в ключе name ? Например name = 'CarEnquiry' .

Результат:

 Array ( [0] => Array ( [interval] => 2014-10-26 [leads] => 0 [name] => CarEnquiry [status] => NEW [appointment] => 0 ) [1] => Array ( [interval] => 2014-10-26 [leads] => 0 [name] => CarEnquiry [status] => CALL1 [appointment] => 0 ) ) 

РЕДАКТИРОВАТЬ

Я забыл упомянуть, что значение поиска должно быть взаимозаменяемым – например name = 'CarEnquiry' или name = 'Finance' .

Используйте функцию array_filter PHP с обратным вызовом.

 $new = array_filter($arr, function ($var) { return ($var['name'] == 'CarEnquiry'); }); 

Изменить: если он должен быть взаимозаменяемым, вы можете немного изменить код:

 $filterBy = 'CarEnquiry'; // or Finance etc. $new = array_filter($arr, function ($var) use ($filterBy) { return ($var['name'] == $filterBy); }); 

array_filter – это функция, которая вам нужна. http://php.net/manual/en/function.array-filter.php

Дайте ему функцию фильтрации следующим образом:

 function my_filter($elt) { return $elt['name'] == 'something'; } 
 <?php function filter_array($array,$term){ $matches = array(); foreach($array as $a){ if($a['name'] == $term) $matches[]=$a; } return $matches; } $new_array = filter_array($your_array,'CarEnquiry'); ?> 
 function multi_array_search_with_condition($array, $condition) { $foundItems = array(); foreach($array as $item) { $find = TRUE; foreach($condition as $key => $value) { if(isset($item[$key]) && $item[$key] == $value) { $find = TRUE; } else { $find = FALSE; } } if($find) { array_push($foundItems, $item); } } return $foundItems; } 

Эта моя функция может использовать эту проблему. Вы можете использовать ;

$ filter = multi_array_search_with_condition ($ array, array ('name' => 'CarEnquiry')); Это позволит получить отфильтрованные элементы из вашего 2-мерного массива