2010-10-29 9 views
0
$j[0]='is'; 
$j[1]='for'; 
$diff = array_diff($uniqdesc, $j); 
foreach($diff as $find){ 

echo $find."</br>"; 

$ uniquedesc est un tableau d'une chaîne de mots. Je dois imprimer tous les mots peu communs. Le code ci-dessus fonctionne bien et en éliminant 'est' 'pour'Impossible de résoudre le problème array_diff

Maintenant j'ai stocké tous les mots communs dans un fichier texte. Et j'ai besoin d'éliminer ces mots communs de n'importe quelle chaîne de mots.

Mais le code ne semble pas fonctionner. Comment résoudre ceci?

$common = file_get_contents('commonwords.txt'); 
$commonArray = explode(" ",$common); 
sort($commonArray); 
$q=0; 
array_unique($commonArray); 
$jay=array_unique($commonArray); 
foreach($jay as $k){ 
$j[$q]=(string)$k; 
$q=$q+1; 
} 
$q=0; 
for($q=0;$q<20;$q++) 
{ 
echo $j[$q];// This is for testing. It printed the first 20 strings correctly. 
} 

$diff = array_diff($uniqdesc, $j); 
foreach($diff as $find){ 

echo $find."</br>"; 

Répondre

0

Il peut y avoir un problème avec des espaces de chaque côté du texte de votre fichier. En outre, il peut aussi s'agir d'un problème que array_diff() distingue entre les cas de mots.
Par exemple:

$a = array("word"); 
$b = array("WORD"); 
$c = array_diff($a, $b); 
// $c = array("WORD", "word"); 

Vous devrez peut-être convertir $uniqdesc pour contenir des caractères minuscules seulement inférieure ou supérieure.

Si vous essayez le code suivant et il ne fonctionne pas non plus, il est probablement un texte non-concordance majuscules/minuscules qui cause les problèmes:

$words = file_get_contents("commonwords.txt"); 
$words = explode(" ", $words); 
for ($i = 0, $sz = count($words); $i < $sz; $i++) { $words[$i] = trim($words[$i]); } 
$words = array_unique($words); 

$diff = array_diff($uniqdesc, $words); 
foreach ($diff as $find) { /* Do stuff */ } 
+0

vous avez raison, je l'ai complètement oublié les espaces. J'ai utilisé la fonction trim et ça marche parfaitement! Merci pour le conseil. –

Questions connexes