Код:
<?php
$key = '';
$_n = array();
$_a = array('Munnar', 'Cochin', 'Cochin', 'Cochin', 'Munnar', 'Cochin');
foreach ($_a as $_1) {
if ($key != $_1) {
$idx = count($_n[$_1]);
if (isset($_n[$_1][$idx])) $idx += 1;
$_n[$_1][$idx] = 1;
$key = $_1;
}
else {
$idx = count($_n[$_1]) -1;
$_n[$_1][$idx] += 1;
}
}
foreach ($_n as $k1=>$v1) {
foreach ($v1 as $k2=>$v2) {
echo 'Key: '.$k1.', Index:'.$k2.', Value:'.$_n[$k1][$k2].'<br/>';
}
}
?>
Результат
Key: Munnar Index:0 Value:1
Key: Munnar Index:1 Value:1
Key: Cochin Index:0 Value:3
Key: Cochin Index:1 Value:1
Если вам нужен точный порядок, как в вашем вопросе
Munnar(1), Cochin(3), Munnar(1), Cochin(1)
Вы можете использовать выше и назначить на внутреннем контуре к новый массив примерно такой:
$new_arr[] = array($k1 => $_n[$k1][$k2]);
Предостережение: убедитесь, что стартовый ключ всегда будет отличаться при первом сравнении.
Вы можете использовать array_count_values (). Он даст вам массив – Pratik
, он даст ответ вроде munnar (2), Cochin (4). Мне нужен результат точно, как указано выше –