2015-08-10 2 views
0

У меня есть массив данных, для которого мне нужно создать счет. Массив получает сборку через соединение с базой данных.Подсчет уникальных значений в многомерном массиве

Array (
    [0]=array(
      [cause] => "Bob" 
      [cause_month] =>'7/2014' 
    ) 
    [1]=array(
      [cause] => "Tim" 
      [cause_month] =>'7/2014' 
    ) 
    [2]=array(
      [cause] => "Bob" 
      [cause_month] =>'7/2014' 
    ) 
    [3]=array(
      [cause] => "Bob" 
      [cause_month] =>'7/2014' 
    ) 
    [4]=array(
      [cause] => "Tim" 
      [cause_month] =>'8/2014' 
    ) 
    [5]=array(
      [cause] => "Tim" 
      [cause_month] =>'8/2014' 
    ) 
    [6]=array(
      [cause] => "Sally" 
      [cause_month] =>'8/2014' 
    ) 
) 

Чтобы вывести массив, который выглядит следующим образом:

Array (
    [7/2014] => [Bob]=>3,[Tim]=>1 
    [8/2014] => [Tim]=>2,[Sally]=>1 
) 

Я прошел через несколько примеров, которые дают мне уникальные причины по cause_month, но не смогли получить # раз, что причина был таким же в этой причине_месяца.

Вот что я взял с другого поста:

$class_array = array(); 
foreach ($sb_array as $sa) { 
    $class_array[$sa['cause_month']][] = array('cause' => $sa['cause']); 
} 

Воспроизводит:

[7/2014] => Bob , Tim 
[8/2014] => Tim , Sally 

Который действительно близко, но я все еще нужен подсчет каждой причины для каждого cause_month

+0

FYI: Вы можете принять ответ, который больше всего вам помог и решился на вашу проблему (http://meta.stackexchange.com/q/5234) – Rizier123

ответ

2

Это должно работать на вас:

Просто используйте это имя ().) в качестве второго ключа измерения и инициализировать его с помощью 0, если он не существует. Затем просто просто увеличивайте счетчик для каждого события.

$class_array = array(); 
foreach ($sb_array as $sa) { 
    if(!isset($class_array[$sa['cause_month']][$sa["cause"]])) 
     $class_array[$sa['cause_month']][$sa["cause"]] = 0; 
    $class_array[$sa['cause_month']][$sa["cause"]]++; 
} 
Смежные вопросы