PHP 从文件读取

示例

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