删除数组中的连续重复项

用户123

我正在研究删除数组中重复项的函数。此功能的不足之处在于,如果连续重复的数目少于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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章