在 PHP 開發中,serialize() 與 unserialize() 是一對核心函數,用於將陣列或物件轉換為可儲存、可傳輸的字串格式,並在需要時還原。簡單來說:
<?php
$test = array('a' => 0, 'b' => 0, 'c' => 0);
$serialized = serialize($test);
echo $serialized; // 輸出: a:3:{s:1:"a";i:0;s:1:"b";i:0;s:1:"c";i:0;}
echo '<hr>';
print_r(unserialize($serialized));
?>
當需將陣列傳遞給下一頁面,且不想使用 Session 或 Cookie 時,可將陣列序列化後經由 URL 參數或表單隱藏欄位傳遞,接收端再反序列化還原。
例如網址目錄系統的「評分功能」:好評、中評、差評三個計數器,原本需建三個欄位,現可合併為一個陣列存入單一長文字欄位:
$rating = array(
'good' => 0,
'mid' => 0,
'bad' => 0
);
$db_value = serialize($rating); // 寫入資料庫
// 讀取時
$rating = unserialize($db_value);
這樣既節省欄位,又便於擴充(如未來新增「讚數」只需修改陣列結構)。
PHP 序列化是處理陣列持久化與傳遞的利器,掌握其原理與適用場景,能讓資料結構設計更靈活、資料庫結構更精簡。