无法解决array_diff问题

时间:2010-10-29 20:52:29

标签: php

$j[0]='is';
$j[1]='for';
$diff = array_diff($uniqdesc, $j); 
foreach($diff as $find){

echo $find."</br>";

$ uniquedesc是一串单词的数组。 我需要打印出所有不常见的单词。上面的代码工作正常,消除'是''''

现在我将所有常用词存储在文本文件中。而且我需要从任何一串词中消除那些常用词。

但代码似乎不起作用。怎么解决这个问题?

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

1 个答案:

答案 0 :(得分: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 */ }