我刚刚接受了PHP的这些问题并且遇到了其中一个问题。问题是:
你有一个PHP 1维数组。请写一个PHP函数 将1个数组作为参数并返回一个数组。功能必须 删除显示3次或更多次的输入数组中的值?
例如,如果您提供功能
数组(1,3,5,2,6,6,6,3,1,9)
the function will return
数组(1,3,5,2,3,1,9)
我能够检查它们是否在重复,但我将它应用于我得到的数组作为输入。
function removeDuplicate($array){
$result = array_count_values( $array );
$values = implode(" ", array_values($result));
echo $values . "<br>";
}
$qArray = array(1, 3, 5, 2, 6, 6, 6, 3, 1, 9);
removeDuplicate($qArray);
还有一件事,我们不能使用array_unique
,因为它包含重复的值,并且我们将它们从当前数组中完全删除。
答案 0 :(得分:1)
这应该有效:
function removeDuplicate($array) {
foreach ($array as $key => $val) {
$new[$val] ++;
if ($new[$val] >= 3)
unset($array[$key]);
}
return $array;
}
答案 1 :(得分:1)
运行此功能我希望这有帮助..
function removeDuplicate($array){
$result = array_count_values( $array );
$dub = array();
$answer = array();
foreach($result as $key => $val) {
if($val >= 3) {
$dub[] = $key;
}
}
foreach($array as $val) {
if(!in_array($val, $dub)) {
$answer[] = $val;
}
}
return $answer;
}
答案 2 :(得分:1)
您可以将此功能用于您想要的任意次数 - 默认情况下为3
function removeDuplicate($arr, $x = 3){
$new = $rem = array();
foreach($arr as $val) {
$new[$val]++;
if($new[$val]>=$x){
$rem[$val]=$new[$val];
}
}
$new = array_keys(array_diff_key($new, $rem));
return $new;
}
答案 3 :(得分:1)
假设数值在数组中的任何位置可能不会出现3次以上:
$array = array(1, 3, 5, 2, 6, 6, 6, 3, 1, 9);
// create array indexed by the numbers to remove
$remove = array_filter(array_count_values($array), function($value) {
return $value >= 3;
});
// filter the original array
$results = array_values(array_filter($array, function($value) use ($remove) {
return !array_key_exists($value, $remove);
}));
如果值连续3次以上不会出现:
$results = [];
for ($i = 0, $n = count($array); $i != $n;) {
$p = $i++;
// find repeated characters
while ($i != $n && $array[$p] === $array[$i]) {
++$i;
}
if ($i - $p < 3) {
// add to results
$results += array_fill(count($results), $i - $p, $array[$p]);
}
}
答案 4 :(得分:1)
我认为它正在获得正确的输出。只试一次。
$array=array(1,2,3,7,4,4,3,5,5,6,7);
$count=count($array);
$k=array();
for($i=0;$i<=$count;$i++)
{
if(!in_array($array[$i],$k))
{
$k[]=$array[$i];
}
}
array_pop($k);
print_r($k);
第一个$ k中的是一个空数组,之后我们将值插入$ k。
答案 5 :(得分:0)
你应该使用array_unique函数。
<?php
$q = array(1, 3, 5, 2, 6, 6, 6, 3, 1, 9);
print_r(array_unique($q));
?>
尝试一下,让我知道它是否有效。