2013-07-26 145 views
-2

我有以下代碼:in_array返回false時,它應該返回true

$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()函數。我嘗試過,但它沒有改變任何東西。

你能幫我意識到我在做什麼錯嗎?

+4

什麼是「停用詞」? – egig

+1

您可以顯示'$ stopwords'並且其中包含'alors'嗎? – newfurniturey

+0

'$ stopwords'在哪裏? – SmokeyPHP

回答

0

我想你想檢查是否$words$list

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

或定義$stopwords

$stopwords = $list; 
+0

在這裏複製我的代碼時,這是一個錯誤。我在我的代碼中使用了正確的數組作爲乾草堆,所以問題不在於此。對此不便,抱歉;) – Streltsov

0

它似乎只是不上的話工作第一行 文本文件

這給了我一個想法:在utf8中是你的my-file.txt嗎?

它可以被保存爲UTF8與BOM - 字節順序標記,即由作爲UTF8觀察時未示出的作爲文本的字節,但將被解釋爲第一個字的一部分,如果沒有它們之間的空格字符和第一個真正的單詞。 (wiki entry)(出於這個原因,建議不要將BOM用於utf8,但有些編輯器仍將它作爲默認值)。

如果是這樣的話,嘗試(使用記事本++爲例)

結論將文件保存爲UTF-8無BOM: 編碼是AB * TCH,有時是必要的,不僅看顯示的文本,但要使用十六進制編輯器或類似工具來檢查字符串不僅看起來相似,而且確實是相同的字節序列

相關問題