首頁 >後端開發 >php教程 >php 如何進行資料的序列化與反序列化

php 如何進行資料的序列化與反序列化

墨辰丷
墨辰丷原創
2018-06-06 15:51:351343瀏覽

這篇文章主要介紹php 如何進行資料的序列化和反序列化,有興趣的朋友參考下,希望對大家有幫助。

php 將資料序列化和反序列化其實用到兩個函數,serialize unserialize
serialize 將陣列格式化成有序的字串
#unserialize 將陣列還原成陣列
#例如:

$user=array('Moe','Larry','Curly'); 
$user=serialize($stooges); 
echo &#39;<pre class="brush:php;toolbar:false">&#39;; 
print_r($user); 
echo &#39;<br />&#39;; 
print_r(unserialize($user));

結果:

a:3:{i:0;s:3:"Moe";i:1;s:5:"Larry";i:2;s:5:"Curly";}
Array ( [0] => Moe [1] => Larry [2] => Curly )

注意當陣列值包含如雙引號、單引號、冒號或中文等字元時,它們被反序列化後,可能會出現亂碼或格式被打亂的問題。

解決亂碼問題可以用base64_encodebase64_decode 兩個函數。
例如:

$user=array(&#39;Moe&#39;,&#39;Larry&#39;,&#39;Curly&#39;); 
$user=base64_encode(serialize($user)); 
$user=unserialize(base64_decode($user));

這樣就不會出現亂碼類別的問題了,但是base64 編碼卻增加了儲存字串的長度

由以上我們可以總結出一個自己的序列化和反序列化的函數來,如下:

function my_serialize($obj_array){ 
  return base64_encode(gzcompress(serialize($obj_array))); 
} 
//反序列化 
function my_unserialize($str){ 
  return unserialize(gzuncompress(base64_decode($str))); 
}

總結:以上就是本篇的全部內容,希望對大家的學習有所幫助。

相關推薦: 

PHP模板引擎Smarty之設定檔在模板變數中的用法及實例詳解

關於PHP讀取mssql json資料中文亂碼的解決方法

PHP模板引擎Smarty中的保留變數的用法及實例分析

以上是php 如何進行資料的序列化與反序列化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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