Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Узнать количество одинаковых элементов в массиве
Форумы портала PHP.SU » » Вопросы новичков » Узнать количество одинаковых элементов в массиве

Страниц (1): [1]
 

1. ridvik - 03 Апреля, 2014 - 22:25:58 - перейти к сообщению
Доброй ночи господа) Такая вот бяда:
есть массив
CODE (htmlphp):
скопировать код в буфер обмена
  1. (
  2.     [1] => Array
  3.         (
  4.             [id] => 1
  5.             [name] => Admin
  6.             [first_name] => Андрей
  7.             [last_name] => Казаков
  8.             [avatar] => animation/11.gif
  9.             [status_access] => 1
  10.             [status] => 1
  11.             [country] => default
  12.         )
  13.  
  14.     [2] => Array
  15.         (
  16.             [id] => 2
  17.             [name] => ridvik
  18.             [first_name] =>
  19.             [last_name] =>
  20.             [avatar] => default.png
  21.             [status_access] => 1
  22.             [status] => 3
  23.             [country] => default
  24.         )
  25.  
  26. )


Этот код формирует игроков определенной команды. Так вот фишка в том, надо посчитать, сколько игроков имеют какой статус. То бишь параметр status. У первого равен 1 у второго 3. Пока что реализовано от 1 до 4. Вот как мне посчитать сколько игроков команды имеют статус 1-4?

P.S. Сильно пожалуйста не бейте))) объяснил конечно не очень, но думаю понять можно((

P.S.S. Спасибо за внимание)
2. EuGen - 03 Апреля, 2014 - 22:44:09 - перейти к сообщению
PHP 5.5:
PHP:
скопировать код в буфер обмена
  1. //$array - исходный массив
  2. $result = array_count_values(array_column($array, 'status'));

PHP <5.5
PHP:
скопировать код в буфер обмена
  1. //$array - исходный массив
  2. $result = array_count_values(array_map(function($x)
  3. {
  4.    return $x['status'];
  5. }, $array));

?
3. ingram - 03 Апреля, 2014 - 22:44:49 - перейти к сообщению
Нужно пройтись по массиву foreach, и посчитать:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $statusGamer = array();
  4.  
  5. foreach($myArray as $row) {
  6.    $statusGamer[$row['status']]++;
  7. }
  8.  
  9. print_r($statusGamer);
  10.  
  11.  


в массиве $statusGamer ключ это наименование статуса, значение кол-во игроков с этим статусом.

 

Powered by ExBB FM 1.0 RC1