数组php中的count元素

时间:2014-11-08 03:47:45

标签: php arrays

我有大约5.000条记录,每条记录包含一个这样的数组

Array
(
    [0] => 96
    [1] => 40
    [2] => 86
    [3] => 17
    [4] => 18
    [5] => 23
)
Array
(
    [0] => 01
    [1] => 21
    [2] => 96
    [3] => 33
    [4] => 44
    [5] => 02
)

我想知道连续出现多少时间元素并进入像这样的数组

array (
    [96]=>2, // number 96 appear 2 time consecutively 
    [40]=>1,
    [86]=>1,
    [17]=>1,
    [18]=>1,
    ....
)

对这个问题有任何想法???

1 个答案:

答案 0 :(得分:1)

要计算连续出现任何给定元素的 max 次数,假设您的5,000个数组位于名为$arr的数组中:

$count = array();
foreach ($arr as $k => $ar) {
    foreach (array_unique($ar) as $a) { 
         $tmp = 1;
         if (isset($count[$a])) {
             $tmp = $count[$a];
         }
         $count[$a] = 1;
         if ($k > 0) {
            $i = 1;
            while ($i <= $k && in_array($a, $arr[$k - $i])) {
                $count[$a]++;
                $i++;
            }
        }
        if ($count[$a] < $tmp) $count[$a] = $tmp;
    }
}

See demo