2015-04-05 78 views
0

我有一個數組,看起來有點像這樣:過濾一期多維數組

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

回答

2

您CA n使用array_filter來執行此操作:

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