fwrite()
和 file_put_contents()
都是 PHP 中用于將數據寫入文件的函數,但它們之間存在一些區別:
參數差異:
fwrite()
函數接受兩個參數:文件句柄和數據。文件句柄是一個打開的文件標識符,數據是要寫入文件的內容。file_put_contents()
函數接受一個字符串參數,即要寫入文件的內容,以及可選的文件句柄和文件模式參數。如果未提供文件句柄,函數會自動打開一個文件用于寫入。適用場景:
fwrite()
更適用于需要逐個寫入多個數據片段的場景。例如,當需要向文件中追加不同內容時,可以使用 fwrite()
。file_put_contents()
更適用于一次性寫入完整數據內容的場景。例如,當需要將整個數組或對象寫入文件時,可以使用 file_put_contents()
。性能差異:
fwrite()
的性能可能會優于 file_put_contents()
,因為它允許更精細地控制數據寫入過程。然而,這種性能差異通常只在處理非常大的數據集時才顯著。錯誤處理:
fwrite()
函數返回寫入的字節數,如果寫入失敗,可以檢查返回值以確定是否發生了錯誤。file_put_contents()
函數在寫入失敗時會返回 false
,并可選地設置一個錯誤信息。這使得 file_put_contents()
更容易進行錯誤處理。示例:
使用 fwrite()
:
$file = fopen("example.txt", "a");
$data = "This is a new line.\n";
$result = fwrite($file, $data);
if ($result === false) {
echo "Error writing to file.";
} else {
echo "Wrote " . $result . " bytes to file.";
}
fclose($file);
使用 file_put_contents()
:
$data = "This is a new line.\n";
$result = file_put_contents("example.txt", $data, FILE_APPEND);
if ($result === false) {
echo "Error writing to file.";
} else {
echo "Wrote " . $result . " bytes to file.";
}