php序列化的幾種形式

2021-09-27 10:30:44 字數 1164 閱讀 8575

場景 :

cookie無法儲存復合形式的資料,所以需要序列化乙個多維陣列存入cookie,但是由於php版本太低(5.2),不支援json_encode

解決:1,serialize和unserialize函式 : 只支援一維陣列 ,據說對物件的支援比較好,json_encode是不支援物件的

2,base64_encode和base64_decode,同樣的問題,不支援多維,如果用它的話,base64編碼將增加字串的長度。為了克服這個問題,可以和gzcompress一起使用:

function my_serialize( $obj )

//反序列化

function my_unserialize($txt)

3. var_export 和 eval

$look_books = array($aid => array($cid => array('article_name' => $article->articlename, 'chapter_name' => $chapter->chaptername))) + $look_books;

$look_books = var_export($look_books, true);

setcookie('look_books', $look_books, $cookietime, '/', '.dym.com');

支援多維陣列,但是需要注意單雙引號會有轉義符,導致eval失敗,需要把轉義符去掉

stripcslashes() 即可。
4. wddx_serialize_value 和 wddx deserialize

//序列化陣列

$s = wddx_serialize_value($a);

echo $s;

banana

coconut

echo '

';

//反序列化

$o = wddx_deserialize($s);

print_r($o);

這種方式xml本身的標籤占用字元過多,比較占用記憶體。

解決時自己使用了第三種。

PHP 幾種 序列化 反序列化的方法

序列化是將變數轉換為可儲存或傳輸的字串的過程 反序列化就是在適當的時候把這個字串再轉化成原來的變數使用。這兩個過程結合起來,可以輕鬆地儲存和傳輸資料,使程式更具維護性。1.serialize和unserialize函式 a array a b banana c coconut 序列化陣列 s ser...

PHP序列化 序列化

將物件序列號 當需要將物件長久儲存時或用於網路傳輸等.將物件序列號成字串儲存 class demo 魔術方式,當物件序列號時自動呼叫,此時會序列號陣列中的屬性.如果沒有該方法,則序列號所有屬性 function sleep 當物件返序列化時自動呼叫,此時會初始化返序列化後物件中該方法中的屬性 fun...

PHP的序列化和反序列化

php使用serialize 這個過程被稱為序列化,使用unserialize 這個過程被稱作反序列化。用於序列化物件或陣列,並返回乙個字串。序列化會儲存物件中的所有變數,不會儲存物件的方法,只會儲存類的名字。php序列化就是將記憶體的變數資料 儲存 到檔案的持久資料的過程例子 class user...