过滤多维数组

时间:2015-04-05 21:21:48

标签: php arrays multidimensional-array filter

我有一个看起来像这样的数组:

array(1) { ["Special"]=> array(4) { [0]=> array(2) { ["ID"]=> int(1) ["Visitors"]=> int(2) } [1]=> array(2) { ["ID"]=> int(4) ["Visitors"]=> int(5) } [2]=> array(2) { ["ID"]=> int(169) ["Visitors"]=> int(0) } } } 

如何通过ID'过滤它?值,所以结果看起来像这样(如果我需要得到ID = 4的数组):

array(1) { ["Special"]=> array(4) { [1]=> array(2) { ["ID"]=> int(4) ["Visitors"]=> int(5) } } } 

我尝试使用该功能,但它并没有返回我需要的功能:

function search($array, $key, $value) {
$results = array();

if (is_array($array)) {
    if (isset($array[$key]) && $array[$key] == $value) {

        $results[] = $array;
    }

    foreach ($array as $subarray) {
        $results = array_merge($results, search($subarray, $key, $value));
    }
}

return $results; }

1 个答案:

答案 0 :(得分:2)

您可以使用array_filter执行此操作:

$result = array(
    "Special" => array_filter($array["Special"], function($element) {
        return $element["ID"] == 4;
    })
);