我有一个多维数组,其值为
$array = array(
0 => array (
"id" => 1,
"parent_id" => 0
),
1 => array (
"id" => 2,
"parent_id" => 1
),
2 => array (
"id" => 3,
"parent_id" => 1,
)
3 => array (
"id" => 4,
"parent_id" => 0
)
4 => array (
"id" => 5,
"parent_id" => 3
)
);
我想找到特定身份证的孩子数。 在我的情况下,我希望结果像
find_children($array, 1);
// output : 2
find_children($array, 3);
// output : 1
我知道这是通过使用 for loop 完成的。该函数是否存在任何PHP数组函数?
答案 0 :(得分:2)
您可以使用array_filter
实现它,将数组过滤到与给定父ID匹配的元素,然后返回已过滤数组的count
。过滤器提供一个回调,它在给定数组的每个元素上运行。
function find_children($array, $parent) {
return count(array_filter($array, function ($e) use ($parent) {
return $e['parent_id'] === $parent;
}));
}
find_children($array, 1); // 2
find_children($array, 3); // 1
find_children($array, 10); // 0
你是否喜欢这个循环是一个品味问题。
答案 1 :(得分:2)
您可以将计数与array_filter
一起使用function doSearch($id, array $array) {
$arr = array_filter($array, function ($var) use ($id){
if ($id === $var['parent_id']) {
return true;
}
});
return count($arr);
}
或更短的版本
function doSearch($id, array $array) {
return count(array_filter($array, function($var) use ($id) {
return $id === $var['parent_id'];
}));
}
所以基本上它会获得$ id等于parent_id并返回其计数
的元素