2011-10-31 13 views

Respuesta

25

Varias maneras.

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

o

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

o cualquier número de otros métodos.

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

que resultará por ejemplo en

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

Uso array_count_values(). Por ejemplo,

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

array_count_values ​​no funcionarán aquí. No lo hago ... array_count_values ​​($ string) // o 12 como $ string – DanielOlivasJr

+2

Las versiones actuales de PHP no le permiten usar la notación '[]' después de una llamada a la función. – Hammerite

+0

@Hammerite eso es estúpido, corregido –

2

hay solución diferente a este:

$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 simplemente un bucle for

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

muy simple:

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

buen trabajo .. @ Baum & @MD –

Cuestiones relacionadas