获取数组中重复数据是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获取数组中重复数据的两种方法 - Python技术站