当前位置: 首页> 最新文章列表> 结合 array_unique() 做初步去重前统计

结合 array_unique() 做初步去重前统计

M66 2025-06-07

在 PHP 中,array_unique() 是一个非常常见的函数,用于从数组中移除重复的值。然而,在许多实际应用场景中,我们可能需要在去重之前,先统计数组中各个元素的出现频率。下面,我们将展示如何结合 array_unique() 来在去重之前统计数组中元素的频次。

1. array_count_values() 函数:统计频次

首先,我们需要使用 PHP 提供的 array_count_values() 函数来统计数组中每个元素的频次。该函数会返回一个关联数组,其中键是原始数组中的元素,值是该元素在数组中出现的次数。

<?php
// 原始数组
$array = ["apple", "banana", "apple", "orange", "banana", "apple"];

// 统计频次
$frequencies = array_count_values($array);

// 输出频次统计结果
print_r($frequencies);
?>

输出结果:

Array
(
    [apple] => 3
    [banana] => 2
    [orange] => 1
)

通过 array_count_values(),我们可以很方便地得到每个元素在数组中出现的次数。

2. 结合 array_unique() 进行去重

接下来,我们希望在统计频次之后,能够去除数组中的重复元素。array_unique() 函数可以帮助我们完成去重操作。去重后的数组将只保留每个元素的一个实例,但需要注意的是,去重不会影响元素的频次统计。

<?php
// 去重
$unique_array = array_unique($array);

// 输出去重后的数组
print_r($unique_array);
?>

输出结果:

Array
(
    [0] => apple
    [1] => banana
    [3] => orange
)

在去重后,数组中的重复元素只保留了一个,尽管元素的频次已经通过 array_count_values() 函数得到了统计。

3. 结合频次和去重的完整代码示例

结合上述两步,我们可以编写一个完整的示例,先统计频次,再去重,最后输出去重后的数组及其元素频次。

<?php
// 原始数组
$array = ["apple", "banana", "apple", "orange", "banana", "apple"];

// 统计频次
$frequencies = array_count_values($array);

// 去重
$unique_array = array_unique($array);

// 输出频次统计结果
echo "频次统计:\n";
print_r($frequencies);

// 输出去重后的数组
echo "去重后的数组:\n";
print_r($unique_array);
?>

输出结果:

频次统计:
Array
(
    [apple] => 3
    [banana] => 2
    [orange] => 1
)

去重后的数组:
Array
(
    [0] => apple
    [1] => banana
    [3] => orange
)

通过这个示例,我们不仅能够统计数组中每个元素的出现频次,还能去除重复元素。

4. 进阶应用:根据频次进行排序

如果你需要根据频次对元素进行排序,可以使用 arsort() 函数对频次数组进行降序排序。然后,你可以根据排序后的结果获取频次较高的元素。

<?php
// 对频次数组进行降序排序
arsort($frequencies);

// 输出排序后的频次
echo "排序后的频次统计:\n";
print_r($frequencies);
?>

输出结果:

排序后的频次统计:
Array
(
    [apple] => 3
    [banana] => 2
    [orange] => 1
)

这样,元素出现的频次就从高到低排序了,方便你做进一步的数据处理。

以上就是如何在 PHP 中结合 array_unique() 函数,先统计数组中元素的频次,再进行去重的完整方法。通过使用 array_count_values() 来统计频次,并结合 array_unique() 去重,你可以灵活地处理数组中的数据,满足不同的需求。