从文件中读取

从文件中读取时,我们希望能够知道我们何时到达该文件的末尾。知道 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");
}