📜  php 按值和计数分组数组 - PHP (1)

📅  最后修改于: 2023-12-03 15:03:42.277000             🧑  作者: Mango

PHP 按值和计数分组数组

在 PHP 中,我们经常会遇到需要根据数组中元素的值来进行分组的情况。例如,我们有一个数组包含了各种颜色的衣服,我们希望根据颜色把衣服分组并统计数量。这个时候,PHP 中的 array_count_values 函数就派上用场了。这个函数可以实现对数组中每个值的计数,并返回一个新的关联数组,其中键是原数组的值,值是原数组中这个值出现的次数。

$colors = array("红色", "黄色", "蓝色", "绿色", "红色", "黄色", "绿色", "红色", "红色");

$grouped = array_count_values($colors);

print_r($grouped);

上面代码输出的结果如下:

Array
(
    [红色] => 4
    [黄色] => 2
    [蓝色] => 1
    [绿色] => 2
)

我们可以看到,原来的数组中出现了 4 个红色,最后返回的数组中键 "红色" 的值为 4。

除了 array_count_values 以外,我们还可以使用 PHP 中的 array_reduce 函数来实现类似的分组功能。array_reduce 函数可以对数组中的每个元素依次执行一个回调函数并返回一个累加的结果。我们可以利用这个函数来实现分组操作。

$colors = array("red", "green", "blue", "yellow", "red", "yellow", "yellow");

$grouped = array_reduce($colors, function(&$result, $item) {
    if(!isset($result[$item])) {
        $result[$item] = 1;
    } else {
        $result[$item]++;
    }
    return $result;
}, array());

print_r($grouped);

上面代码输出的结果如下:

Array
(
    [red] => 2
    [green] => 1
    [blue] => 1
    [yellow] => 3
)

通过使用 array_reduce 函数,我们可以根据原数组的元素进行分组,并统计每个分组中元素的个数。