Количество одинаковых, подряд идущих значений массива

anpv

Guest
Количество одинаковых, подряд идущих значений массива

Доброго времени суток.
Подскажите, нет ли случайно стандартной ф-ции для подсчета количества одинаковых, подряд идущих значений массива?
Например:
PHP:
$a[] = 11;
$a[] = 11;
$a[] = 22;
$a[] = 22;
$a[] = 22;
$a[] = 33;
$a[] = 11;
$a[] = 11;
$a[] = 11;
// ф-ция должна выдать:
// array(2, 3, 1, 3);
И если нет то как лучше это сделать?
 

Demiurg

Guest
нету такой функции, все это пишатся в 3 строчки.
 

anpv

Guest
А если точнее, то желательно бы получить следующее:
PHP:
array(array(11 => 2), array(22 => 3), array(33 => 1), array(11 => 3));
Но как это реализовать в 3 строчки?
 

Nirva

Dmitry Polyakov
$matches = array();
$m = 1;
$last = array_shift($a);
foreach ($a as $val){
if ($a == $last){
$m++;
}else{
$matches[$last] = $m; $m = 1; $last = $a;
}
}
 

anpv

Guest
Фанат
Нет, именно подряд.
Nirva
Что-то не работает.
var_dump($matches) => array(1) { [11]=> int(1) }
 

Фанат

oncle terrible
Команда форума
anpv
если не работает - надо отладить.
Здесь тебе не молочная кухня по раздаче бесплатного кода.
Тебе дали идею - пиши код.
 
Сверху