PHP 陣列、物件等複雜資料結構若要持久化到文字檔,常見做法是 serialize() 或 json_encode()。本文示範兩種方式的寫入與讀取流程,並說明適用場景差異。
適合 PHP 內部使用,保留型別與物件結構。
<?php
$data = array("上海", "西安", "北京");
// 寫入:序列化後存檔
file_put_contents("E:/data.txt", serialize($data));
// 讀取:取出內容並反序列化
$datas = unserialize(file_get_contents("E:/data.txt"));
print_r($datas);
?>
適合跨語言、前端串接,支援鍵值對結構,輕量易讀。
<?php
$data = array("現代" => "上海", "文化" => "西安", "首都" => "北京");
// 寫入:編碼為 JSON 字串
file_put_contents("E:/data.txt", json_encode($data));
// 讀取:解碼為 PHP 陣列(第二參數 true 為關聯陣列)
$datas = json_decode(file_get_contents("E:/data.txt"), true);
print_r($datas);
?>
| 特性 | serialize | JSON |
|---|---|---|
| 可讀性 | 低(二進制像字串) | 高(純文字) |
| 跨語言 | 否 | 是 |
| 物件支援 | 完整(含私有屬性) | 僅公開屬性 |
| 效能 | 略快 | 略慢 |
| 建議場景 | PHP 內部快取、Session 儲存 | API 回傳、設定檔、前端溝通 |
true 會回傳 stdClass 物件。