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