过滤多校正数组


Filter a multidemensional array

我有一个数组,看起来有点像:

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; }

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

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