use*_*123 5 php arrays duplicates
我正在研究一个删除数组中重复项的函数。这个函数的问题是,如果连续重复项少于 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;
}
Run Code Online (Sandbox Code Playgroud)
样本
$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);
Run Code Online (Sandbox Code Playgroud)
预期结果
[1,2,4,1,1,1,1,0,8,7,2,0,0,8,2,4,1,5]
Run Code Online (Sandbox Code Playgroud)
这里:
<?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;
}
Run Code Online (Sandbox Code Playgroud)
输出:
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)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |