массив не проходит через функцию php in_array - PullRequest
0 голосов
/ 07 ноября 2018

Я вставил, используя file (), слова из файла .txt в массив. Согласно var_dump () значения являются строками, а print_r дает мне обычный одномерный массив.

  $words = file('stopWords.txt');

  //var_dump($words);

Когда я пытаюсь что-то вроде:

 if( in_array('able', $words) ) {
       echo "match found";
 }

Ничего не происходит, я попытался создать тестовый массив, и он работает нормально. Массив, который выводит $ word, содержит 636 элементов. Может быть, это как-то связано? Хотя я сомневаюсь, потому что я пробовал это с большим массивом, и это все еще работало. Я не уверен, что является причиной этого, похоже, есть проблемы только с этим конкретным массивом. Может кто-нибудь, пожалуйста, помогите мне здесь, спасибо.

1 Ответ

0 голосов
/ 07 ноября 2018

Вместо просто

 $words = file('stopWords.txt');

Используйте

$words = file('stopWords.txt',FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES);

флаги

Флаги необязательных параметров могут быть одной или несколькими из следующих констант:

FILE_USE_INCLUDE_PATH Найдите файл в include_path.

FILE_IGNORE_NEW_LINES Пропуск новой строки в конце каждого элемента массива

FILE_SKIP_EMPTY_LINES Пропустить пустые строки

Это самый актуальный Omit newline at the end of each array element.

В основном это то, что вы делаете:

if( in_array('able', ["able\n"]) ) {
   echo "match found";
}

Что составляет false. Или, другими словами, это не совсем эквивалентно выполнению explode("\n", $contents), поскольку строка (элементы массива) все еще содержит символ новой строки. Что, поскольку in_array не является нечетким поиском (в основном это ==), он не будет соответствовать им 'able' != 'able\n'.

Примечание: Каждая строка в результирующем массиве будет включать конец строки, если только не используется FILE_IGNORE_NEW_LINES.

http://php.net/manual/en/function.file.php

Вы также можете обрезать элементы в массиве, как это $words=array_map('trim', $words);, но зачем беспокоиться, если для него есть флаг.

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...