2015-11-06 19 views
5

ho matrice simili devo contare mediante array valoricome contare i valori di matrice con chiave

Array ([Cop] => Array ([0] => Dozen [1] => Dozen [2] => Akls [3] => Akls) [MSN] => Array ([0] => Dozen) [NeK] => Array ([0] => Suhan [1] => Ebao) [NetSE] => Array ([0] => SuZhan [1] => Guhang)) 

Ad esempio

Array ([Cop] => Array ([0] => Dozen [1] => Dozen [2] => Akls [3] => Akls)) 

Nella chiave Cop ho due diversi valori di cop quindi ho bisogno di poliziotto dovrebbe essere 2

Cop - 2 
MSn - 1 
NeK - 2 
NetSE - 2 

ho bisogno del numero di mi piace soprattutto come posso fare questo?

risposta

5

Prova semplicemente usando array_map, count, & array_unique come come

array_map(function($v) { 
      return count(array_unique($v)); 
     }, $arr); 
+1

Ahh !! Uno migliore. :) –

+0

Grazie @Sougata –

+1

Non è possibile ottenere una soluzione più elegante. – Amarnasan

5

Utilizzare array_unique() e quindi contare.

count(array_unique($array['Cop']));// output 2 

Se si desidera stampare per ogni tasto facciamo seguire:

$array = array('Cop'=>array('Dozen','Dozen','Akls','Akls'), 'MSN'=> array('Dozen'), 'NeK'=> array('Suhan','Ebao')); 
foreach($array as $key => &$value) { 
    $value = count(array_unique($array[$key])); 
} 
print_r($array); 

uscita:

Cop = 2 
MSN = 1 
NeK = 2 
2

Si dovrebbe usare array_count_values ​​() per questo, ecco un esempio:

$data = array('cop' => array(0 => 'test', 1 => 'test', 2 => 'test2')); 

foreach($data as $item){ 
    $result = array_count_values($item); 
    print_r($result); 
} 

Uscite:

Array 
(
    [test] => 2 
    [test2] => 1 
) 
Problemi correlati