我有大约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,
....
)
对这个问题有任何想法???
答案 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;
}
}