Введение
В этой статье я хочу показать как можно быстро и просто посчитать повторы в массиве средствами 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