我当前的代码:
$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/