Couting вхождения каждого значения в массив

Я пытаюсь сортировать и объединять массив, но я нахожу это очень запутанным.

Я вытащил данные из таблицы mysql:

$total = mysql_query("SELECT * FROM orders"); 

Затем я сортирую каждый столбец в массив:

 while($result = mysql_fetch_assoc($total)) { $cst[] = $result['customer']; $partnumber[] = $result['partnumber']; $misc[] = $result['misc']; } 

теперь у misc есть много записей, которые повторяются в случайном порядке, например

 $misc = array( [0] => red, [1] = >red, [2] => blue, [3] => blue, [4] => blue, [5] => green, [6] =>red ) 

ВОПРОС: Каков наилучший способ подсчета количества красных, синих или зеленых элементов в $ misc? Как создать массив таким образом, чтобы $misc_num['red'] = 3 и т. Д.?

Используйте array_count_values .

 while($result = mysql_fetch_assoc($total)) { $cst[] = $result['customer']; $partnumber[] = $result['partnumber']; $misc[] = $result['misc']; if(array_key_exists($result['misc'], $misc_num)) { $misc_num[$result['misc']] += 1; } else { $misc_num[$result['misc']] = 1; } } 

Я думаю, что это нужно!

Я рассматриваю ваши следующие коды

  $ total = mysql_query ("SELECT * FROM orders"); 
  while ($ result = mysql_fetch_assoc ($ total)) 
{
$ cst [] = $ result ['customer'];
$ partnumber [] = $ result ['partnumber'];
$ misc [] = $ result ['misc'];
}
$ misc = array (
[0] => красный,
[1] => красный,
[2] => синий,
[3] => синий,
[4] => синий,
[5] => зеленый,
[6] => красный
)

Теперь вы можете реализовать функцию array_count_values ​​() здесь как

print_r (array_count_values ​​($ разное))

Это приводит к следующим данным

массив
(
[красный] => 3
[синий] => 3
[зеленый] => 1
)