serialize

(PHP 3 >= 3.0.5, PHP 4, PHP 5)

serialize --  產生一個可存儲的值的表示

描述

string serialize ( mixed value )

serialize() 返回字串,此字串包括了表示 value 的位元組流,可以存儲於任何地方。

這有利於存儲或傳遞 PHP 的值,同時不丟失其類型和結構。

想要將已序列化的字串變回 PHP 的值,可使用 unserialize()serialize() 可處理除了 resource 之外的任何類型。甚至可以 serialize() 那些包括了指向其自身引用的陣列。你正 serialize() 的陣列/物件中的引用也將被存儲。

當序列化物件時,PHP 將試圖在序列動作之前呼叫該對象的成員函數 __sleep()。這樣就容許物件在被序列化之前做任何清除動作。類似的,當使用 unserialize() 還原物件時, 將呼叫 __wakeup() 成員函數。

注: 在 PHP 3 中,物件屬性將被序列化,但是方法則會丟失。PHP 4 打破了此限制,可以同時存儲屬性和方法。請參見類與物件中的序列化物件部分取得更多訊息。

例子 1. serialize() 示例

<?php
// $session_data 是包括了現用的會員 session 訊息的多維陣列。
// 我們使用 serialize() 在請求結束之前將其存儲到資料庫中。

$conn odbc_connect ("webdb""php""chicken");
$stmt odbc_prepare ($conn,
      
"UPDATE sessions SET data = ? WHERE id = ?");
$sqldata = array (serialize($session_data), $PHP_AUTH_USER);
if (!
odbc_execute ($stmt, &$sqldata)) {
    
$stmt odbc_prepare($conn,
     
"INSERT INTO sessions (id, data) VALUES(?, ?)");
    if (!
odbc_execute($stmt, &$sqldata)) {
    
/* 出錯 */
    
}
}
?>

參見:unserialize()