我有一个数组,看起来有点像:
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;
})
);