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