2011-10-31 16 views

Odpowiedz

25

Kilka sposobów.

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

lub

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

lub dowolną liczbę innych sposobów.

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

które będą powstawać na przykład w

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

użytkowania array_count_values(). Na przykład:

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

array_count_values ​​nie zadziała tutaj. Nie robię .. array_count_values ​​($ string) // lub 12 jako $ string – DanielOlivasJr

+2

Obecne wersje PHP nie pozwalają ci używać notacji '[]' po wywołaniu funtionu. – Hammerite

+0

@Hammerite to głupia, poprawiona –

2

istnieją różne rozwiązania to:

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

lub

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

lub tylko pętli

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

lub foreach

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

Bardzo prosta:

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

świetna robota .. @ Baum & @MD –

Powiązane problemy