2011-10-31 10 views

risposta

25

Diversi modi.

$cnt = count(array_filter($uid,create_function('$a','return $a==12;'))); 

o

$tmp = array_count_values($uid); 
$cnt = $tmp[12]; 

o un qualsiasi numero di altri metodi.

0
$repeated = array(); 
foreach($uid as $id){ 
    if (!isset($repeated[$id])) $repeated[$id] = -1; 
    $repeated[$id]++; 
} 

che si tradurrà per esempio in

array(
    12 => 2 
    14 => 1 
) 
8

Usa array_count_values(). Ad esempio,

$freqs = array_count_values($uid); 
$freq_12 = $freqs['12']; 
+0

array_count_values ​​non funziona qui. Non lo faccio .. array_count_values ​​($ stringa) // o 12 come $ stringa – DanielOlivasJr

+2

Le versioni correnti di PHP non consentono di usare la notazione '[]' dopo una chiamata funtion. – Hammerite

+0

@Hammerite che è stupido, corretto –

2

esistono diverse soluzioni a questo:

$count = count(array_filter($uid, function($x) { return $x==12;})); 

o

array_reduce($uid, function($c, $v) { return $v + ($c == 12?1:0);},0) 

o solo un ciclo

for($i=0, $last=count($uid), $count=0; $i<$last;$i++) 
    if ($uid[$i]==12) $count++; 

o un foreach

$count=0; 
foreach($uid as $current) 
    if ($current==12) $count++; 
3

Molto semplice:

$uid= array(12,23,12,4,2,5,56); 
$indexes = array_keys($uid, 12); //array(0, 1) 
echo count($indexes); 
+0

ottimo lavoro .. @ Baum & @MD –

Problemi correlati