从文件读取时,我们希望能够知道何时到达该文件的末尾。知道fgets()在文件末尾返回false,我们可以将其用作循环的条件。但是,如果最后一次读取返回的数据恰好是布尔值false,则可能导致文件读取循环过早终止。
$handle = fopen ("/path/to/my/file", "r"); if ($handle === false) { throw new Exception ("Failed to open file for reading"); } while ($data = fgets($handle)) { echo ("Current file line is $data\n"); } fclose ($handle);
如果正在读取的文件包含空行,则while循环将在此时终止,因为空字符串的值为boolean false。
相反,我们可以false使用严格的相等运算符显式检查布尔值:
while (($data = fgets($handle)) !== false) { echo ("Current file line is $data\n"); }
请注意,这是一个人为的示例;在现实生活中,我们将使用以下循环:
while (!feof($handle)) { $data = fgets($handle); echo ("Current file line is $data\n"); }
或将整个内容替换为:
$filedata = file("/path/to/my/file"); foreach ($filedata as $data) { echo ("Current file line is $data\n"); }