删除php数组中出现两次以上的元素

时间:2014-12-11 15:41:21

标签: php

我在php中寻找一个函数,该函数必须删除显示三次或更多次的数组中的值?例如,如果给出函数数组(2,4,6,3,7,7,7,4,2,0),函数将返回数组(2,4,6,3,4,2,0)

3 个答案:

答案 0 :(得分:2)

您可以使用array_count_values()来获取频率。然后使用foreach获取频率小于3的值...

$array = array(2, 4, 6, 3, 7, 7, 7, 4, 2, 0);
$frq = array_count_values($array);
$result = array();
foreach ($frq as $key=>$value){
    if ($value < 3){
        $result[] = $key;
    }
}

答案 1 :(得分:1)

function FilterMyArray(array &$array){

$array_count=array_count_values($array);

foreach($array_count  as $key => $value){

 if($value > 2){
     foreach (array_keys($array, $key, true) as $unsetKey) {
     unset($array[$unsetKey]);
        }
      }
   }
}
$array=array(1, 3, 5, 2, 6, 6, 6, 3, 1, 9);
FilterMyArray($array);
print_r($array); 

<强>输出

Array ( [0] => 1 [1] => 3 [2] => 5 [3] => 2 [7] => 3 [8] => 1 [9] => 9 )

`

答案 2 :(得分:0)

这将删除所有重复项,但您必须添加它才能计算每个值的数量。

$a = array(2, 4, 6, 3, 7, 7, 7, 4, 2, 0);
$b = array();
for ($a as $key=>$value) {
  if (!in_array($value, $b)) {
    $b[] = $value;
  }
}
// array $b has all the values with no duplicates.