How to filter a two-dimensional array by value

How to create a function that filters a two-dimensional array by value?

Given the following array:

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 ) 

How can I filter an array to only show arrays that contain a specific value in name ? For example name = 'CarEnquiry' .

Resulting result:

 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 ) ) 

EDIT

I forgot to mention that the search value should be interchangeable - i.e. name = 'CarEnquiry' or name = 'Finance' .

+6
source share
4 answers

Use the PHP function callback array_filter .

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

Edit: if it should be interchangeable, you can change the code a bit:

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

array_filter is the function you need. http://php.net/manual/en/function.array-filter.php

Give it a filter function as follows:

 function my_filter($elt) { return $elt['name'] == 'something'; } 
+1
source
 <?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'); ?> 
0
source
 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; } 

This feature may use this problem. You can use;

$ filter = multi_array_search_with_condition ($ array, array ('name' => 'CarEnquiry')); This will get the filtered elements from your 2-dimensional array.

0
source

Source: https://habr.com/ru/post/979515/


All Articles