首頁 >後端開發 >PHP問題 >php如何反序列化數組和對象

php如何反序列化數組和對象

醉折花枝作酒筹
醉折花枝作酒筹原創
2021-08-06 10:33:222744瀏覽

上一篇文章我們了解了序列化物件或陣列的方法,有需要的請看《php如何序列化陣列和物件》。這次我們向大家介紹反序列化物件或陣列的方法,有需要的可以參考參考。

在我們開始這篇文章之前,我們先來了解什麼是反序列化。

反序列化就是把位元組流(二進位串)還原為陣列和物件的過程。

我們了解了反序列化的意義之後,我們就很容易明白這篇文章需要做什麼了。我們需要將上一篇已經序列化的物件和陣列還原回來。

先來看一個小例子,就是將上篇序列化的陣列給還原回來。

上篇文章的範例是

<?php    
$sites = array(&#39;Google&#39;, &#39;360&#39;, &#39;Facebook&#39;);    
$serialized_data = serialize($sites);    
echo  $serialized_data . PHP_EOL;  
?>

結果是

php如何反序列化數組和對象

#那我們就將這個位元組流還原成陣列。

<?php
$str = &#39;a:3:{i:0;s:6:"Google";i:1;s:3:"360";i:2;s:8:"Facebook";}&#39;;
$unserialized_data = unserialize($str);
print_r($unserialized_data);
?>

還原的結果是

php如何反序列化數組和對象

好啦,我們這就將結果還原啦。我們細細解讀一下,這麼長的一串字元經過一個函數,就變成的一個陣列。雖然我們不知道這一長串經過了什麼?它是如何從一長串數字與字母的組合變成我們熟悉的陣列的。

但是我們可以去學習這個函數啊。

unserialize() 函數用於將透過 serialize() 函數序列化後的物件或陣列進行反序列化,並傳回原始的物件結構。

那我們來看看這個函數的語法結構吧。

mixed unserialize (需要进行反序列化操作的字符串)

要注意的是這個函數的回傳值,我們好好來看一下。

這個函數傳回的是轉換之後的值,可為integerfloatstringarrayobject。如果傳遞的字串不可解序列化,則傳回FALSE,並產生一個E_NOTICE

就說到這裡了,有其他想知道的,可以點選這個喔。 → →php影片教學

#

以上是php如何反序列化數組和對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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