Php 过滤多维数组而不影响密钥
我正在做一个定制的PHP项目,我需要得到多维数组的子集 我有一个数组 Array ( [0] => Array ( [0] => 2011 [1] => Allegany [2] => 55.4 ) [1] => Array ( [0] => 2012 [1] => Albany [2] => 325.1 ) [2] => Array ( [0] => 2011 [1] => Bronx [2] => 11 ) [3] => Array ( [0] => 2012 [1] => Bronx [2] => 11 ) ) 排列 ( [0]=>阵列 ( [0] => 2011 [1] =>阿勒加尼 [2] => 55.4 ) [1] =>阵列 ( [0] => 2012 [1] =>奥尔巴尼 [2] => 325.1 ) [2] =>阵列 ( [0] => 2011 [1] =>布朗克斯 [2] => 11 ) [3] =>阵列 ( [0] => 2012 [1] =>布朗克斯 [2] => 11 ) ) 我想返回一个数组,其中存在[0]=>2012,如下所示 Array ( [1] => Array ( [0] => 2012 [1] => Albany [2] => 325.1 ) [3] => Array ( [0] => 2012 [1] => Bronx [2] => 11 ) ) 排列 ( [1] =>阵列 ( [0] => 2012 [1] =>奥尔巴尼 [2] => 325.1 ) [3] =>阵列 ( [0] => 2012 [1] =>布朗克斯 [2] => 11 ) ) 编写此函数是为了允许您根据可自定义条件从数组中选择条目子集Php 过滤多维数组而不影响密钥,php,arrays,multidimensional-array,filter,Php,Arrays,Multidimensional Array,Filter,我正在做一个定制的PHP项目,我需要得到多维数组的子集 我有一个数组 Array ( [0] => Array ( [0] => 2011 [1] => Allegany [2] => 55.4 ) [1] => Array ( [0] => 2012 [1] => Albany [2]
$subset = array_filter(
$originalArray,
function($value) {
return isset($value[0]) && $value[0] == 2012;
}
);
或更通用的变体:
$searchColumn = 0;
$searchValue = 2012;
$subset = array_filter(
$originalArray,
function($value) use ($searchColumn, $searchValue) {
return isset($value[$searchColumn]) && $value[$searchColumn] == $searchValue;
}
);
编辑
用于简化在不同列中搜索匹配项的变量
$searchCriteria = [0 => 2012, 2 => 11];
$subset = array_filter(
$originalArray,
function($value) use ($searchCriteria) {
return count($searchCriteria) == count(array_intersect_assoc($value, $searchCriteria));
}
);
好的,那么您需要检查数组中的所有项,并检查是否有键为0且值为2012的子项。交易是什么?巨大的答案:)顺便说一句,不使用任何函数的逻辑:
foreach($arr as$key=>$v)if($v[0]==2012)$out[$key]=v代码>非常感谢。那很好用。但是如果我必须过滤两个元素,比如“[0]=>2012和[2]=>11”,那么您需要修改回调的逻辑return-isset($value[0])&&&$value[0]==2012&&isset($value[2])&&$value[2]==11代码>