Введение
В этой статье я хочу показать как можно быстро и просто посчитать повторы в массиве средствами php. Этот пример простой, но подобная проблема возникает довольно часто, поэтому я и решил написать статью. Что нам нужно? Необходимо посчитать все повторяющиеся элементы в массиве и узнать сколько раз они повторяются. А также чтоб было еще интересней можно отсортировать результат и вывести на странице.
Как посчитать повторы элементов массива. Код
Задача понятна, поэтому что либо еще описывать нет смысла, я просто приведу код с подробными комментариями:
// массив, в котором будем искать повторы
$arrayElements = array(
'element_1', 'element_2', 'element_3', 'element_1', 'element_1', 'element_3', 'element_2', 'element_4'
);
// массив для хранения, данных о повторах
$arrayTmp = array();
// перебираем все элементы массива
foreach($arrayElements as $oneCompany){
// проверяем, был ли повтор элемента
if(in_array($oneCompany, array_keys($arrayTmp))){
// если такой элемент уже встречался,
// то записываем об этом в массив
// увеличиваем счетчик повтора
$arrayTmp = array_merge($arrayTmp, array(
$oneCompany => $arrayTmp[$oneCompany] + 1
));
}else{
// если элемент еще не встречался,
// то запишем запишем о нем в новую ячейку вспомогательного массива
$arrayTmp = array_merge($arrayTmp, array(
$oneCompany => 1
));
}
}
// сортируем массив по возрастанию
ksort($arrayTmp);
// выводим результат
foreach($arrayTmp as $key=>$val){
echo "$key - $val <br/>";
}

К чему такой велик?
array_count_values