有php代码:
\n\n#!/usr/bin/php\n<?php\nif ($file = fopen("file.txt", "r")) {\n while(!feof($file)) {\n $line = fgets($file);\n echo "----" , $line , "----";\n }\n fclose($file);\n}\n?>\nRun Code Online (Sandbox Code Playgroud)\n\n和空文件“file.txt”
\n\n[root@localhost]# ls -l file.txt \n-rw-r--r-- 1 root root 0 \xd0\x90\xd0\xbf\xd1\x80 21 10:14 file.txt\n[root@localhost]# file file.txt \nfile.txt: empty\nRun Code Online (Sandbox Code Playgroud)\n\n为什么我得到?feof 在第一个循环中应该是 true 还是我错了?
\n\n[root@localhost ]# php -f test2.php\n--------\n\n[root@localhost ]# \nRun Code Online (Sandbox Code Playgroud)\n
是的,那是因为文件已经是空的,但 PHP 直到执行该fgets()方法才知道它。
为了避免 PHP 读取第一个空行,您必须检查它fgets不是false. 为了实现这一目标应该做类似的事情:
if ($file = fopen("file.txt", "r")) {
while (($line = fgets($file)) !== false) {
echo "----" , $line , "----";
}
fclose($file);
}
Run Code Online (Sandbox Code Playgroud)