首頁 > 後端開發 > PHP問題 > php序列化是什麼意思

php序列化是什麼意思

(*-*)浩
發布: 2023-02-24 06:08:01
原創
4049 人瀏覽過

序列化是將變數轉換為可保存或傳輸的字串的過程;反序列化就是在適當的時候把這個字串再轉換成原來的變數使用。這兩個過程結合起來,可以輕鬆地儲存和傳輸數據,使程式更具維護性。

php序列化是什麼意思

PHP中的序列化和反序列化分別透過函數serialize()和unserialize()即可實現。

string serialize ( mixed value )
登入後複製

serialize() 傳回字串,此字串包含了表示 value 的位元組流,可以儲存於任何地方。 (建議學習:PHP程式設計從入門到精通

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

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

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

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

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)) {
/* 出错 */
}
}
?>
登入後複製

以上是php序列化是什麼意思的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
php
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板