Php 如何按值过滤二维数组
如何创建一个按值过滤二维数组的函数 给定以下数组:Php 如何按值过滤二维数组,php,arrays,Php,Arrays,如何创建一个按值过滤二维数组的函数 给定以下数组: Array ( [0] => Array ( [interval] => 2014-10-26 [leads] => 0 [name] => CarEnquiry [status] => NEW [appointment] => 0 ) [1
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'
使用带有回调的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\u filter
是您需要的功能
为其提供如下过滤功能:
function my_filter($elt) {
return $elt['name'] == 'something';
}
这个函数可以用来解决这个问题。您可以使用:
$filtered = multi_array_search_with_condition(
$array,
array('name' => 'CarEnquiry')
);
这将从二维数组中获取筛选项。如果要使其成为通用函数,请使用以下命令:
function filterArrayByKeyValue($array, $key, $keyValue)
{
return array_filter($array, function($value) use ($key, $keyValue) {
return $value[$key] == $keyValue;
});
}
上面的示例使用的是精确的单词匹配,下面是一个简单的示例,用于过滤数组以查找不精确的“名称”匹配
使用
array\u filter()
。您知道,在您的示例中,名称
属性都不等于字符串“CarEnquiry”
。他们属于CarEnquiry
。几个小时前我回答了完全相同的问题:为什么要费心于临时true
/false
声明?我不推荐这种冗长的解决方案。(一篇好的文章应该包括一个break
)@Tobias是的,你可以<代码>$new=array\u filter($arr,函数($var)use($filterBy1,$filterBy2){return($var['name']==$filterBy1 | |$var['name']=$filterBy2})代码>重新索引(从0开始):$new=array\u值(array\u过滤器($arr,function($var){return($var['name']=='CarEnquiry');})代码>谢谢。这个有帮助
$filtered = multi_array_search_with_condition(
$array,
array('name' => 'CarEnquiry')
);
function filterArrayByKeyValue($array, $key, $keyValue)
{
return array_filter($array, function($value) use ($key, $keyValue) {
return $value[$key] == $keyValue;
});
}
$options = array_filter($options, function ($option) use ($name) {
return strpos(strtolower($option['text']), strtolower($name)) !== FALSE;
});