Сравнить запись массива, если она равна любой из записей другого массива - PullRequest
0 голосов
/ 02 августа 2010

Вот проблема: У меня есть слова, которые я ввел через текстовую область. Я помещаю каждое слово в запись. слова находятся в массиве. С другой стороны, у меня есть список слов, в котором слова разделены новой строкой, я помещаю каждое слово в другой массив.

Теперь я хочу проверить, если $words_entered[$i] = any (and which) of the array $wordlist.

Заранее спасибо!

Ответы [ 3 ]

4 голосов
/ 02 августа 2010

Если вы хотите, чтобы результаты в списке:

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

Если вы хотите, чтобы результаты НЕ в списке:

$diff = array_diff($words_entered,explode("\n",$wordlist));
1 голос
/ 02 августа 2010

Используйте функцию in_array:

if (in_array($words_entered[$i], $wordlist))
{
  echo 'The word ' . $words_entered[$i] . ' is in the wordlist' . '<br />';
}
0 голосов
/ 02 августа 2010

Я бы проверял на лету ...


$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
  }
}

если текст большой, я бы ускорил сравнение, заменив in_array на isset вот так ...


$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
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...