2011-05-18 3 views
1

Hey! J'essaie de compter le nombre de fois qu'une certaine chaîne existe dans un tableau. Je l'ai essayé .. Mon tableau:Comment compter le nombre de certaines chaînes dans le tableau?

$test = array('correct','correct','incorrect','incorrect','correct'); 

in_array('correct',$test); // only gives me true 

Je pensais à count(); mais cela ne renvoie que le nombre d'éléments ... Alors, comment compter combien de chaînes "correctes" sont dans ce tableau?

Merci!

Répondre

4

Comment l'utilisation preg_grep?

$count = count(preg_grep('/^correct$/', $test)); 
+0

Parfait! Merci! –

+0

l'a surpassé et le corrige! – Galen

1

Que diriez-vous:

$count = 0; 
foreach($test as $t) 
    if (strcmp($t, "correct") == 0) 
     $count++; 
+0

C'est la première fois que je vois quelqu'un utiliser 'strcmp' pour comparer deux chaînes en PHP! (BTW, je pense que là, == court beaucoup plus vite) –

+0

Force d'habitude je suppose. D'intérêt: http://stackoverflow.com/questions/3333353/php-string-comparison-vs-strcmp – Ryan

+0

Bien sûr, cela pourrait être utile, mais ce n'est pas si souvent que vous avez besoin de trouver le meilleur de deux cordes (je ne devait)! ^^ À propos de la vitesse: http://snipplr.com/view/758/speed-test-strcmp-vs-/ –

1

Je count et combinerai array_filter pour cela:

$count = count(array_filter($test, function($val) { 
    return $val === 'correct'; 
})); 

Notez que la syntaxe de la fonction prend en charge PHP> = 5.3 uniquement.

0
$count = 0; 

foreach ($test as $testvalue) { 
if ($testvalue == "correct") { $count++; } 
} 
0
function count_instances($haystack, $needle){ 
    $count = 0; 
    foreach($haystack as $i) 
    if($needle == $i) 
     $count++; 
    return $count; 
} 
Questions connexes