2013-07-26 3 views
-2

У меня есть следующий код:in_array возвращение ложным, когда он должен вернуть истинный

$stopwords = file("/path/to/my-file.txt", FILE_IGNORE_NEW_LINES); 
echo($stopwords[0]." - "); 

$words = explode(" ", "alors on danse"); 
echo($words[0]." - "); 

if (in_array($words[0], $stopwords)) { 
    echo("yay"); 
} else { 
    echo("nay"); 
} 

И я всегда получаю alors - alors - nay в результате, когда я ожидал alors - alors - yay

Я видел несколько тем здесь относительно подобных проблем и решений почти всегда использовалась функция trim() для элементов массива list. Который я пробовал, но ничего не изменил.

Не могли бы вы помочь мне понять, что я делаю неправильно?

+4

Что такое 'стоп-слова'? – egig

+1

Можете ли вы показать '$ stopwords' и на самом деле' alors'? – newfurniturey

+0

Где '$ стоп-слова'? – SmokeyPHP

ответ

0

Я думаю, что вы хотите проверить, если $words в $list:

if(in_array($words[0], $list)) { 
... 
} 

или определить $stopwords:

$stopwords = $list; 
+0

Ошибка при копировании моего кода здесь. Я использую правильный массив как стог сена в моем коде, поэтому проблема не вытекает из этого. Простите за неудобство ;) – Streltsov

0

кажется, что это только не работает слова на первая строка текст

Это дало мне представление: ваш файл my-file.txt в utf8?

может быть сохранен как utf8 с BOM - знак порядка байтов, которые состоят из байтов, которые не показаны в виде текста, если смотреть в utf8, но не будет интерпретироваться как часть первого слова, если нет пробельный символ между ними и первое реальное слово. (wiki entry) (по этой причине спецификация не рекомендуется для использования с utf8, но некоторые редакторы все еще по умолчанию).

Если это так, то попробуйте сохранить файл в utf8 без BOM (например, с помощью Notepad ++)

Вывод: Кодирование аб * чик, иногда это необходимо, чтобы не только смотреть на отображаемый текст, но использовать шестнадцатеричный редактор или аналогичные инструменты, чтобы проверить, не строятся ли строки не одинаково, а действительно одна и та же последовательность байтов.

Смежные вопросы