PHP统计二维数组元素个数的方法

下面是详细讲解“PHP统计二维数组元素个数的方法”的完整攻略。

下面是详细讲解“PHP统计二维数组元素个数的方法”的完整攻略。

前言

在实际开发中,我们时常需要统计二维数组元素的个数,比如统计每个分类下的文章数、用户发布的文章数等。本篇攻略将分享四种方法来实现对二维数组元素个数的统计。

方法一:循环遍历法

循环遍历法是最基础的方法,它通过循环数组来进行统计。

<?php
// 定义二维数组
$arr = array(
    array('id' => 1, 'name' => '张三'),
    array('id' => 2, 'name' => '李四'),
    array('id' => 3, 'name' => '王五'),
    array('id' => 4, 'name' => '刘六'),
    array('id' => 1, 'name' => '赵七')
);
$count = [];
foreach ($arr as $v) {
    $count[$v['id']] = isset($count[$v['id']]) ? $count[$v['id']] + 1 : 1;
}
print_r($count); // 输出结果:Array ( [1] => 2 [2] => 1 [3] => 1 [4] => 1 )

上述代码中,通过foreach循环遍历数组$arr中的每一个元素,利用$v['id']来表示分类ID,然后把每个分类ID作为数组下标,把对应的元素累加到$count数组中。

方法二:array_column()和array_count_values()法

array_column()函数可以取出二维数组中指定key的一维数组,array_count_values()函数可以统计数组中所有值出现的次数,把结果保存到一个新数组中。

<?php
// 定义二维数组
$arr = array(
    array('id' => 1, 'name' => '张三'),
    array('id' => 2, 'name' => '李四'),
    array('id' => 3, 'name' => '王五'),
    array('id' => 4, 'name' => '刘六'),
    array('id' => 1, 'name' => '赵七')
);
$count = array_count_values(array_column($arr, 'id'));
print_r($count); // 输出结果:Array ( [1] => 2 [2] => 1 [3] => 1 [4] => 1 )

上述代码中,通过array_column()函数提取了二维数组中下标为id的一维数组,然后通过array_count_values()函数统计出现次数。

方法三:array_reduce()法

array_reduce()函数可以将数组化为一个值。这个函数接收两个参数:数组和回调函数。

<?php
// 定义二维数组
$arr = array(
    array('id' => 1, 'name' => '张三'),
    array('id' => 2, 'name' => '李四'),
    array('id' => 3, 'name' => '王五'),
    array('id' => 4, 'name' => '刘六'),
    array('id' => 1, 'name' => '赵七')
);

$count = array_reduce($arr, function ($result, $value) {
    if (!isset($result[$value['id']])) {
        $result[$value['id']] = 1;
    } else {
        $result[$value['id']]++;
    }
    return $result;
}, []);
print_r($count); // 输出结果:Array ( [1] => 2 [2] => 1 [3] => 1 [4] => 1 )

上述代码中,通过array_reduce()函数遍历数组,并通过匿名函数处理每个元素,最终得到的结果存放在$count数组中。

方法四:array_walk()法

array_walk()函数可以对数组中的每个元素执行回调函数。

<?php
// 定义二维数组
$arr = array(
    array('id' => 1, 'name' => '张三'),
    array('id' => 2, 'name' => '李四'),
    array('id' => 3, 'name' => '王五'),
    array('id' => 4, 'name' => '刘六'),
    array('id' => 1, 'name' => '赵七')
);

$count = [];
array_walk($arr, function ($value) use (&$count) {
    $count[$value['id']] = isset($count[$value['id']]) ? $count[$value['id']] + 1 : 1;
});
print_r($count); // 输出结果:Array ( [1] => 2 [2] => 1 [3] => 1 [4] => 1 )

上述代码中,通过array_walk()函数遍历数组元素,对每个元素执行匿名函数,最终得到的结果存放在$count数组中。

结束语

这就是统计二维数组元素个数的四种方法了,我们可以根据实际需求来选择使用不同的方法,以达到最优解。

本文标题为:PHP统计二维数组元素个数的方法

基础教程推荐