php - 读取文本文件并将行与完全相同的行进行比较返回 false

标签 php arrays file loops foreach

我当前的代码:

$file = fopen("countries.txt","r");
$array = array();

while(!feof($file)) {
    $array[] = fgets($file);
}

fclose($file);

这是我的 foreach 循环:

$str = "test";

foreach ($array as $key => $val) {

    if ($val == $str) {
        echo $val;
    } else {
        echo "not found";
    }

}

我想知道为什么它只打印 $val 如果它是数组的最后一个值。

例如,如果 txt 文件看起来像这样,它就可以工作

test1
test2
test3
test

但如果它看起来像这样就不起作用

test1
test2
test
test3

最佳答案

问题是,每行末尾都有一个换行符,所以:

test\n !== test
  //^^ See here

这就是为什么它不能像您期望的那样工作。

现在怎么解决?能给你介绍一下功能吗:file() .您可以将文件读入数组并设置标志以忽略每行末尾的这些新行。

所以将所有这些信息放在一起你会得到这个代码:

$array = file("countries.txt", FILE_IGNORE_NEW_LINES);
$str = "test";

foreach ($array as $key => $val) {

    if ($val == $str) {
        echo $val;
    } else {
        echo "not found";
    }

}

关于php - 读取文本文件并将行与完全相同的行进行比较返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31420526/

相关文章:

php - 如何在 PHP 中按子午线(AM/PM)对时间排序

c - 不使用 fopen() 和 fread() 读取 linux utmp 文件

php - 对多维数组进行排序 - 保留键的值

php - Drupal 7 表单未显示在页面上

javascript - 对对象数组内的数组进行排序

Java数组最低数和平均值计算不正确

javascript - 手动编辑嵌套数组

php - 在 PHP 上使用 Curl 发送空 <input type ="file"> 字段

Python通过存储在csv中的链接下载文件

php - 在 magento 中添加澳大利亚表费率