從檔案中讀取
從檔案中讀取時,我們希望能夠知道我們何時到達該檔案的末尾。知道 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");
}