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

echo $find."</br>"; 

$ uniquedesc - это массив из строки слов. Мне нужно распечатать все необычные слова. Вышеприведенный код работает и устраняет «is» для «Невозможно решить проблему array_diff

Теперь я сохранил все обычные слова в текстовом файле. И мне нужно устранить эти общие слова из любой строки слов.

Но код не работает. Как это решить?

$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>"; 

ответ

0

Возможно, это проблема с пробелом по обе стороны от текста из вашего файла. Кроме того, также может быть проблемой, что array_diff() различает слова.
Например:

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

Вы, возможно, потребуется преобразовать $uniqdesc содержать только нижние или символы верхнего регистра.

Если вы попробуете следующий код и он не работает, либо, это, вероятно, текст верхний/нижний регистр несовпадение, что вызывает проблемы:

$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

вы правы, я совсем забыл о пространствах. Я использовал функцию триммера, и он отлично работает! Спасибо за совет. – 2010-10-29 21:27:39