如何删除数组中的重复项?
例如,如果我有以下数组:
$array = array('1','1','2','3');
我希望它变得更好
$array = array('2','3');
因此,如果找到其中两个值,我希望它删除整个值。
如何删除数组中的重复项?
例如,如果我有以下数组:
$array = array('1','1','2','3');
我希望它变得更好
$array = array('2','3');
因此,如果找到其中两个值,我希望它删除整个值。
array_count_values()
来过滤它们:$array = array('1','1','2','3');
$res = array_keys(array_filter(array_count_values($array), function($freq) {
return $freq == 1;
}));
根据PHP版本,这应该可以在所有PHP版本>= 4.0.6中运行,因为它不需要匿名函数,而匿名函数需要PHP>= 5.3:
function moreThanOne($val) {
return $val < 2;
}
$a1 = array('1','1','2','3');
print_r(array_keys(array_filter(array_count_values($a1), 'moreThanOne')));
演示 (更改下拉列表中的PHP版本以选择您正在使用的PHP版本)
这个能够工作是因为:
array_count_values
会遍历数组并为每个值创建一个索引,并在每次再次遇到该值时增加它。array_filter
将传递所创建的数组,并通过之前定义的 moreThanOne
函数,如果它返回 false
,则键/值对将被删除。array_keys
将丢弃数组的 value
部分,创建一个仅包含已定义的键的值的数组。 这最后一步给出了一个结果,该结果删除了原始数组中存在多次的所有值。array_filter
被引入的时候 :) - Ja͢ck<?php
$array = array('1','1','2','3');
foreach($array as $data){
$key= array_keys($array,$data);
if(count($key)>1){
foreach($key as $key2 => $data2){
unset($array[$key2]);
}
}
}
$array=array_values($array);
print_r($array);
?>
输出
Array ( [0] => 2 [1] => 3 )
PHP提供了很多数组函数,你只需要将它们组合起来使用:
$arr = array_keys(array_filter(array_count_values($arr), function($val) {
return $val === 1;
}));
array_keys
, array_filter
, array_count_values
演示
array_unique($array)
$array = array(4, "4", "3", 4, 3, "3");
$result = array_unique($array);
print_r($result);
/*
Array
(
[0] => 4
[2] => 3
)
*/