我正在研究删除数组中重复项的函数。此功能的不足之处在于,如果连续重复的数目少于5,则它将保留,大于5的将成为单个数字。
我的问题是无法弄清楚逻辑。
希望您能够帮助我。
谢谢。
样例代码
function removeDuplicates($array){
$result = array();
$lastVal = null;
$temp_array = array();
foreach ($array as $key => $value) {
# code...
if($value != $firstVal){
$result[] = $value;
}else{
$temp_array[] = $value;
}
$lastVal = $value;
}
return $result;
}
样品
$array = array(1,2,4,1,1,1,1,0,8,7,2,0,0,8,8,8,8,8,8,8,2,4,1,5);
预期结果
[1,2,4,1,1,1,1,0,8,7,2,0,0,8,2,4,1,5]
这里:
<?php
$array = array(1,2,4,1,1,1,1,0,8,7,2,0,0,8,8,8,8,8,8,8,2,4,1,5);
$test = removeDuplicates($array);
echo '<pre>';
var_dump($test);
function removeDuplicates($array){
$result = [];
$count = 1;
for ($i = 1; $i <= count($array)-1; $i++) {
if ($array[$i] == $array[$i - 1]) {
$count++;
} else {
if ($count >= 5) {
array_splice($array, $i-$count, $count-1);
}
$count = 1;
}
}
return $array;
}
输出:
array(18) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(4)
[3]=>
int(1)
[4]=>
int(1)
[5]=>
int(1)
[6]=>
int(1)
[7]=>
int(0)
[8]=>
int(8)
[9]=>
int(7)
[10]=>
int(2)
[11]=>
int(0)
[12]=>
int(0)
[13]=>
int(8)
[14]=>
int(2)
[15]=>
int(4)
[16]=>
int(1)
[17]=>
int(5)
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句