PHP While 循環(!feof()) 未輸出完整資料
嘗試讀取和顯示.txt 的全部內容時如果使用while 循環(!feof()) 文件,使用者可能會遇到循環未完成輸出的問題,可能會跳過或截斷文件的末尾文件。當最終讀取操作之前發生文件結束 (EOF) 測試時,就會發生此問題。
要解決此問題,建議修改循環結構以在讀取過程中執行 EOF 檢查。這是一個改進的程式碼片段:
$handle = fopen("item_sets.txt", "r"); if ($handle) { while (($buffer = fgets($handle, 4096)) !== false) { $trimmed = trim($buffer); echo $trimmed; } } else { echo 'Unexpected error opening file'; } fclose($handle);
此外,建議明確處理錯誤,而不是使用 @ 抑制錯誤。改進的程式碼片段:
$line_count = 0; $handle = fopen("item_sets.txt", "r"); if ($handle) { while (($buffer = fgets($handle, 4096)) !== false) { $trimmed = trim($buffer); echo $trimmed; $line_count++; } } else { echo 'Unexpected error opening file'; } fclose($handle); echo PHP_EOL.PHP_EOL.PHP_EOL.'Lines read from file = ' . $line_count;
使用提供的資料檔案測試此程式碼時,它會產生正確的輸出,包括檔案中的最後一個項目:
[aa_fade_revolver]weapon_revolver" "1"
以上是為什麼我的 PHP `while (!feof())` 不循環讀取整個檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!