在php中查找具有特定键和值的数组的计数


Find the count of array with specific key and value in php

我有一个多维数组,包含以下值

$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
            )
         );

我想找到特定id的子节点的个数。在我的例子中,我希望结果像

find_children($array, 1);
// output : 2
find_children($array, 3);
// output : 1
我知道这是通过使用for循环来完成的。这个函数是否存在PHP数组函数?

可以将count与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的元素并返回它们的计数

您可以使用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

你是否喜欢这个而不是循环,这是一个品味问题。