我需要计算数组中连续重复的元素,但如果它们不连续,我也想计算它们,以使它们的顺序与它们相同。
例如我有流动数组:
$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
)
)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句