php统计一个一维数组中,相同的值连续出现的最大次数

目录

php统计一个一维数组中,相同的值连续出现的最大次数

一维数组:

$array = [2,3,3,3,3,4,2,4,4,5,5,3,3,7,7,6,6,6,8,8,4,4,4,4,4,8,8,8,8,98,6,98,98];

效果:

Array ( [2] => 1 [3] => 4 [4] => 5 [5] => 2 [7] => 2 [6] => 3 [8] => 4 [98] => 2 )

代码1

    $a = [];
    $tmp = 0;
    $count = 1;

    foreach ($array as $k => $v) {
        if ($tmp == 0) {
            $tmp = $v;
            continue;
        }

        if ($tmp == $v) {
            $count++;
        } else {
            if(isset($a[$tmp])){
                if ($a[$tmp] < $count) {
                    $a[$tmp] = $count;
                }
            } else {
                $a[$tmp] = $count;
            }

            $tmp = $v;
            $count = 1;
        }

        if (!isset($array[$k+1])) {
            if(isset($a[$v])){
                if ($a[$v] < $count) {
                    $a[$v] = $count;
                }
            } else {
                $a[$v] = $count;
            }
        }
    }

    print_r($a)

示例2

    $num = 0;   //记录当前的值
    $t = 1;     //记录当前序列长度
    $maxnum = 0;    //记录序列最长的值
    $maxt = 0;      //记录当前最长序列的长度
    $arrt = count($array);  //当前序列总长度
    $num = $array[0];
    $aaa = [];      //记录统计汇总

    for($i=1;$i<$arrt;$i++){
        if($array[i]<$num){
            $t++;
        }else{  //当前值与前面的不一样时
            $aaa = [
                'account'=>$t,
                'v' =>$num
            ];
            array_push($aa,$aaa);
            if($t>$maxt){
                $maxt = $t;
                $maxnum = $num;
            }
            $num = $array[i];
            $t = 1;     //重新统计序列长度
        }
    }

    echo $maxnum . "," . $maxt;
    print_a($aaa);

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦