Задать вопрос

Как узнать количество одинаковых значений в массиве?

Имеется массив:

1=>12A
2=>SCX-2400
3=>ep-27
4=>12A
5=>36A
6=>36A
7=>xerox
и т.д.
Дайте пожалуйста подсказку в какую сторону копать, чтоб получилось следующее:

12А - 2шт.
SCX-2400 - 1 шт.
36А -2 шт.
и т.д.
То есть надо узнать количество одинаковых значений.
  • Вопрос задан
  • 3544 просмотра
Подписаться 2 Оценить Комментировать
Решения вопроса 2
Если эти данные у Вас хранятся в базе. Сделайте это на уровне базы. Как Вам уже подсказывали.
SELECT table.pole, count(table.pole) AS count FROM `table`
GROUP BY table.pole

Получите массив вида.
"pole" "count"
"12A" "2"
"36A" "2"
"ep-27" "1"
"SCX-2400" "1"
"xerox" "1"
Ответ написан
исправленный вариант:
$res = mysql_query("SELECT model FROM tech WHERE tech_cat='{$cat_id}'");
$models = array();
while ( $row = mysql_fetch_assoc($res) ) {
    $models[] = $row['model'];
}
print_r($models);
print_r(array_count_values($models));
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
COUNT() и GROUP BY
Ответ написан
calliko
@calliko Автор вопроса
computy.ru
нашел что-то подходящее:
array_count_values — Подсчитывает количество всех значений массива

написал такое:
$kolmodel = mysql_query("SELECT model FROM tech WHERE tech_cat='$cat_id'");
if($array = mysql_fetch_array($kolmodel)){
    do {
        print_r(array_count_values($array));
    }while($array = mysql_fetch_array($kolmodel));
}


выдало такое:
Array ( [1] => 2 )
Array ( [2] => 2 )
Array ( [3] => 2 )
Array ( [3] => 2 )
Array ( [1] => 2 )
Array ( [35] => 2 )
Array ( [37] => 2 )
Array ( [36] => 2 )
Array ( [28] => 2 )
Array ( [16] => 2 )
Array ( [21] => 2 )
Array ( [21] => 2 )
Array ( [21] => 2 )
Array ( [3] => 2 )
Array ( [30] => 2 )
Array ( [3] => 2 )
Array ( [33] => 2 )
Array ( [27] => 2 )
Array ( [17] => 2 )
Array ( [30] => 2 )
Array ( [16] => 2 )
Array ( [20] => 2 )
Array ( [30] => 2 )
Array ( [34] => 2 )
хотя должно то все по-другому быть(
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы