首頁 >後端開發 >PHP問題 >php不能序列化嗎

php不能序列化嗎

青灯夜游
青灯夜游原創
2022-04-26 17:13:252031瀏覽

php能實現序列化。在php中,可以利用serialize()函數實現序列化,將值轉換為一個可以儲存的字串,語法「serialize(要序列化的變數)」;還可使用unserialize()函數實現反序列化,重新把字串變回PHP原來的值。

php不能序列化嗎

本教學操作環境:windows7系統、PHP7.1版、DELL G3電腦

所謂序列化,就是將一個在記憶體中的變數轉換為可保存或傳輸的字串的過程。而反序列化就是在適當的時候把這個字串再轉換成原來的變數使用。這兩個過程結合起來可以輕鬆的完成資料的儲存和傳輸操作,使得程式更具維護性。

php也能實現序列化。

在php中,可以利用serialize() 函數實作序列化,將值轉換成一個可以儲存的字串;還可使用unserialize() 函數能夠重新把字串變回PHP 原來的值,也就是反序列化。

serialize() 函數的語法格式如下:

serialize(mixed $value)

其中 $value 就是要序列化的變數。

serialize() 函數可以處理除了 resource(資源)之外的任何類型。當序列化物件時,PHP 會在序列動作之前呼叫該物件的 __sleep() 成員函數。這樣就允許物件在被序列化之前做任何清除操作。類似的,當使用 unserialize() 反序列化物件時,將呼叫 __wakeup() 成員函數。

【範例】使用 serialize() 函數序列化一個物件。

<?php
header(&#39;content-type:text/html;charset=utf-8&#39;);   
class WebSit{
    public $name;
    public $url;
    function __construct($name, $url){
        $this->name = $name;
        $this->url  = $url;
    }
}
$websit  = new WebSit(&#39;php中文网&#39;, &#39;https://www.php.cn/&#39;);
$ser_str = serialize($websit);
echo $ser_str;
?>

php不能序列化嗎

擴展知識:反序列化

當使用serialize() 函數將物件序列化後,可以將此得到的字串儲存到檔案或資料庫中,然後在需要的地方使用unserialize() 函數將這個字串反序列化,unserialize() 函數的語法格式如下:

unserialize(string $str)

其中,$ str 為使用serialize() 函數序列化後的字串。如果傳入的字串無法被反序列化,則會傳回 FALSE,並產生一個 E_NOTICE。

【範例】反序列化上面得到的字串。

<?php
header(&#39;content-type:text/html;charset=utf-8&#39;);   
class WebSit{
    public $name;
    public $url;
    function __construct($name, $url){
        $this->name = $name;
        $this->url  = $url;
    }
}
$str = &#39;O:6:"WebSit":2:{s:4:"name";s:12:"php中文网";s:3:"url";s:19:"https://www.php.cn/";}&#39;;
$websit = unserialize($str);
var_dump($websit);
?>

php不能序列化嗎

推薦學習:《PHP影片教學

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

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn