2016-06-13 28 views
9

So che questa domanda ha già ricevuto risposta alcune volte, tuttavia nessuna delle risposte si applica al mio scenario.Conteggio valori nell'array multidimensionale PHP

Array Corrente:

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 
     ) 

) 

uscita desiderato

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 

codice attuale:

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

In altre parole, solo contando i tempi e la loro memorizzazione in un array separato o variabile.

+4

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

risposta

11

Si può semplicemente utilizzare array_count_values con call_user_func_array come come

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

Wow. Una soluzione a una linea per un dramma 1h. Sono impressionato –

+2

gud one ... piace +1 @Uchiha – RJParikh

+0

Felice che ti abbia aiutato. @FilipBusic –

0

Questa è la soluzione migliore credo

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

In PHP> = 5.6 è possibile utilizzare l'argomento disimballaggio invece di chiamare il call_user_func_array():

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

Ulteriori informazioni: Argument unpacking via ...

Problemi correlati