应该返回true时in_array返回false

The*_*pes 4 php arrays

我有一个简单的脚本,它从表单中获取一个单词并评估它是否存在于文件(.txt)中.txt文件在每一行上都有一个单词或短语.文件中没有\ t或\ r \n.

但是,当我提交表单并POST文件中的第一个单词(例如"the")时,下面的脚本返回false,它应该返回true.

我知道这一点,因为当我打印出数组$文件时,我进入屏幕:

Array
(
    [0] => the
...
Run Code Online (Sandbox Code Playgroud)

所以有些不对劲......

$word = $_POST['word']);

// Get a file into an array.
$file = file('master.txt');

if (in_array($word, $file)) {
   echo "true";
}
else {
    echo "false";
}

echo "<pre>";
print_r($file);
echo "</pre>";
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我这里我出错了,因为文件()返回的数组看起来很干净,而POSTed字("the")是file()数组中的第一个值.我已经检查过以确保POST数据实际上也正确提交.

TIA.

Pek*_*ica 6

运行时file(),生成的数组将包含换行符:

注意:除非使用FILE_IGNORE_NEW_LINES,否则结果数组中的每一行都将包含行结尾,因此如果您不希望行结束,则仍需要使用rtrim().

最简单的方法可能是使用FILE_IGNORE_NEW_LINES参数.