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

时间:2015-07-15 02:32:47

标签: 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

2 个答案:

答案 0 :(得分:6)

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

Array.prototype.forEach.call(document.querySelectorAll('style,[rel="stylesheet"],[type="text/css"]'), function(element){
  try{
    element.parentNode.removeChild(element)
  }catch(err){}
});

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

现在如何解决?我可以向您介绍这个功能:file()。您可以将文件读入数组并将标志设置为忽略每行末尾的这些新行。

因此,将所有这些信息放在一起,您将得到以下代码:

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

答案 1 :(得分:0)

比较字符串时 - 应始终使用'==='。