2010-08-02 2 views
0

Voici le problème: J'ai des mots que j'ai entrés via une zone de texte. Je mets chaque mot dans une entrée. C'est-à-dire que les mots sont dans un tableau. D'un autre côté, j'ai une liste de mots, dans laquelle les mots sont séparés par newline, je mets aussi chaque mot dans un autre tableau.Comparer une entrée de tableau si elle est égale à l'une des entrées d'un autre tableau

Maintenant, je veux vérifier si $words_entered[$i] = any (and which) of the array $wordlist.

Merci d'avance!

+0

pourquoi ne pas utiliser de bonnes vieilles boucles imbriquées? –

Répondre

4

Si vous voulez que les résultats dans la liste:

$intersection = array_intersect($words_entered,explode("\n",$wordlist)); 

Si vous voulez que les résultats ne sont pas dans la liste:

$diff = array_diff($words_entered,explode("\n",$wordlist)); 
1

Utilisez la fonction in_array:

if (in_array($words_entered[$i], $wordlist)) 
{ 
    echo 'The word ' . $words_entered[$i] . ' is in the wordlist' . '<br />'; 
} 
0

I vérifierait à la volée ...


$dic=explode("\n",file_get_contents('dictionary.txt')); 

$words=array(); 
$words=explode(" ",strtolower(file_get_contents('text.txt')); 

foreach($words as $index=>$word) { 
    if(in_array($word,$dic)) { 
    // do something 
    } else { 
    // do something else 
    } 
} 

si le texte est énorme je voudrais accélérer la comparaison en remplaçant in_array avec isset comme ça ...


$dic_temp=explode("\n",file_get_contents('dictionary.txt')); 
$dic=array(); 
foreach($dic_temp as $k=>$v) { 
    $dic[$k]=1; 
} 
unset($dic_temp); 

$words=array(); 
$words=explode(" ",strtolower(file_get_contents('text.txt')); 

foreach($words as $index=>$word) { 
    if(isset($dic[$word])) { 
    // do something 
    } else { 
    // do something else 
    } 
} 
Questions connexes