php获取数组中重复数据的两种方法

获取数组中重复数据是PHP中常见的需求之一,下面介绍两种常见的获取数组中重复数据的方法。

获取数组中重复数据是PHP中常见的需求之一,下面介绍两种常见的获取数组中重复数据的方法。

方法一:array_count_values方法

首先我们可以使用 array_count_values 函数来获取数组中重复数据的信息。

该函数的作用是统计数组中每个值出现的次数。

array_count_values ( array $array ) : array

示例代码:

<?php
$fruits = array("apple", "banana", "orange", "apple", "apple");

$result = array_count_values($fruits);

print_r($result);
?>

在上面的代码中,我们使用了 array_count_values 函数来统计 $fruits 数组中每个值出现的次数。使用 print_r 函数打印结果,得到以下输出:

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

上述输出表示,数组 $fruits 中值为 "apple" 的元素出现了 3 次(也就是重复了 2 次),值为 "banana" 的元素和值为 "orange" 的元素出现各 1 次,即没有重复数据。

我们可以使用以下代码来过滤重复项并获取重复数据:

<?php
$fruits = array("apple", "banana", "orange", "apple", "apple");

$result = array_filter(array_count_values($fruits), function($value) {
    return $value > 1;
});

print_r($result);
?>

在上面的代码中,我们使用了 array_filter 函数来过滤出现次数大于 1 的元素,使用 print_r 函数打印结果,得到以下输出:

Array
(
    [apple] => 3
)

以上输出表示,在数组 $fruits 中值为 "apple" 的元素出现了 3 次,即存在重复数据。

方法二:使用循环

其次我们可以使用 foreach 循环遍历数组,并创建一个新数组来存储重复数据。

示例代码:

<?php
$fruits = array("apple", "banana", "orange", "apple", "apple");

$repeated = array();

foreach($fruits as $value) {
    if(@$repeated[$value] == 1) continue;
    $keys = array_keys($fruits, $value);
    if(count($keys) > 1) {
        $repeated[$value] = 1;
        echo "$value is repeated\n";
    }
}
?>

在上面的代码中,我们使用 foreach 循环遍历 $fruits 数组,使用 array_keys 函数查找当前遍历的元素在数组中的位置,然后判断是否有重复数据。若有重复数据,将该元素加入到 $repeated 数组,并输出提示信息。

执行以上代码,我们得到以下输出:

apple is repeated

以上输出表示,在数组 $fruits 中值为 "apple" 的元素出现了 3 次,即存在重复数据。

总结

上面介绍了使用 array_count_values 函数和 foreach 循环两种方法来获取数组中重复数据。两种方法各有优缺点,需要根据实际情况选择合适的方法。

本文标题为:php获取数组中重复数据的两种方法

基础教程推荐