PHP - 以相同的顺序计算数组中连续重复的元素

杜桑·米利科维奇

我需要计算数组中连续重复的元素,但如果它们不连续,我也想计算它们,以使它们的顺序与它们相同。

例如我有流动数组:

$array = Array ('a','b','a','a','a','c','c','b','b','a','a','a','a');

如果我使用 array_count_values 函数示例:

print_r(array_count_values($array));

输出将是:

Array ( [a] => 8 [b] => 3 [c] => 2 )

但我需要得到这样的输出:

element   counted value
    a       1
    b       1
    a       3
    c       2
    b       2
    a       4

如果有人可以帮助我解决这个问题,我将不胜感激?

谢谢你。

缺口

您可以迭代数组,计算相同的值,并在它们不同时将值推送到结果数组:

$result = [];
$count = 0;
$current = $array[0];
for ($i = 0; $i < count($array); $i++) {
    if ($array[$i] == $current) {
        $count++;
    }
    else {
        $result[] = array($current, $count);
        $count = 1;
    }
    $current = $array[$i];
}
$result[] = array($current, $count);
print_r($result);

输出:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => 1
        )
    [1] => Array
        (
            [0] => b
            [1] => 1
        )
    [2] => Array
        (
            [0] => a
            [1] => 3
        )
    [3] => Array
        (
            [0] => c
            [1] => 2
        )
    [4] => Array
        (
            [0] => b
            [1] => 2
        )
    [5] => Array
        (
            [0] => a
            [1] => 4
        )
)

3v4l.org 上的演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章