2016-06-13 11 views
9

Tôi biết câu hỏi này đã được trả lời một vài lần, tuy nhiên, không có câu trả lời nào áp dụng cho kịch bản của tôi.Đếm giá trị trong mảng đa chiều PHP

mảng hiện tại:

Array 
(
    [12] => Array 
     (
      [0] => 1AM 
      [1] => 2AM 
      [2] => 3AM 
      [3] => 4AM 
     ) 

    [13] => Array 
     (
      [0] => 1AM 
      [1] => 2AM 
      [2] => 6AM 
      [3] => 4AM 
     ) 

    [14] => Array 
     (
      [0] => 1AM 
      [1] => 2AM 
      [2] => 7AM 
      [3] => 4AM 
     ) 

) 

Output mong muốn:

3 People Signed Up at 1AM, 

3 People signed up at 2AM, 

1 Signed up at 3AM 

1 Signed up at 6AM 

1 Signed up at 7AM 

3 Signed up at 4AM 

đang hiện tại:

foreach($array as $k => $v) { 
    $result[$k] = array_count_values($v); 
    arsort($result[$k]); 
} 
print_r($result); 

Nói cách khác, chỉ cần đếm thời gian và lưu trữ chúng trong một mảng riêng biệt hoặc biến.

+4

array_count_values ​​(call_user_func_array ('merge', $ array)); – splash58

Trả lời

11

Bạn chỉ có thể sử dụng array_count_values cùng với call_user_func_array như là

array_count_values(call_user_func_array('array_merge', $array)); 
+2

Chà. Một giải pháp một dòng cho một bộ phim 1h. Tôi ấn tượng –

+2

gud ... giống như +1 @Uchiha – RJParikh

+0

Vui vì nó đã giúp bạn. @FilipBusic –

0

Đây là giải pháp tốt nhất mà tôi nghĩ

foreach($array as $item) { 
    $result[] = count($item); 
} 
print_r($result); 
0

Trong PHP> = 5.6, bạn có thể sử dụng lập luận giải nén thay vì gọi call_user_func_array():

$result = array_count_values(array_merge(...$array)); 

Đọc thêm: Argument unpacking via ...

Các vấn đề liên quan