【问题标题】:in_array returning false when should return truein_array 返回 false 什么时候应该返回 true
【发布时间】:2010-07-24 22:24:48
【问题描述】:

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

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

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

Array
(
    [0] => the
...

所以有问题……

$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>";

谁能告诉我这里哪里出错了,因为 file() 返回的数组看起来很干净,而 POST 字(“the”)是 file() 数组中的第一个值。我已检查以确保 POST 数据实际上也正确提交。

TIA。

【问题讨论】:

  • “the”是否在文件中的单独行上? file() 函数返回一个数组,其中的元素对应于文件中的每一行。

标签: php arrays


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    是否将 FILE_IGNORE_NEW_LINES 添加到 file() 帮助中?

    $file = file('master.txt', FILE_IGNORE_NEW_LINES);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-21
      • 1970-01-01
      • 2021-09-04
      • 2012-08-08
      • 2018-11-09
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多