簡體   English   中英

數組不通過PHP函數in_array

[英]array not going through php function in_array

我使用file()將.txt文件中的單詞插入到數組中。 根據var_dump(),值是字符串,而print_r給我一個普通的一維數組。

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

  //var_dump($words);

當我嘗試類似的東西:

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

什么都沒發生,我嘗試過用它制作一個測試陣列,而且效果很好。 $ word輸出的數組中有636個元素。 也許這有關系嗎? 盡管我對此表示懷疑,因為我已經嘗試過使用更大的陣列,但仍然可以使用。 我不確定導致這種情況發生的原因,似乎只有這個特定的陣列有問題。 有人可以在這里幫助我,謝謝。

不只是

 $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最相關的一個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/zh/function.file.php

您也可以像這樣修改數組中的項目$words=array_map('trim', $words); 但是為什么要打擾當有一個標志。

干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM