從檔案中讀取

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