但是,我們已經(jīng)有了一個方便的解決方案來處理這種情況。我們不必編寫自己的函數(shù)來將復(fù)雜數(shù)組轉(zhuǎn)換為格式化字符串。有兩種流行的變量序列化方法。(推薦:PHP教程)
1、serialize()
2、unserialize()
我們可以使用serialize()函數(shù)序列化PHP中的任何數(shù)據(jù)。serialize()函數(shù)接受一個參數(shù),該參數(shù)是我們想要分類的數(shù)據(jù)并返回一個序列化的字符串。
程序如下:
?php //一個復(fù)雜的數(shù)組$myvar = array( hello , 42, array(1, two ), apple // 轉(zhuǎn)換成字符串 $string = serialize($myvar); // 打印序列化的數(shù)據(jù)echo $string; ?
輸出:
a:4:{i:0;s:5: hello i:1;i:42;i:2;a:2:{i:0;i:1;i:1;s:3: two }i:3;s:5: apple }
從上面的代碼中,我們得到了一個具有序列化數(shù)據(jù)的變量$string。我們可以使用unserialize()函數(shù)來反序列化變量的值,以返回復(fù)雜數(shù)組$myvar的原始值。
serialize()和unserialize()函數(shù)示例:
?php// 一個復(fù)雜的數(shù)組$myvar = array( hello , array(1, two ), apple // 序列化上述數(shù)據(jù)$string = serialize($myvar);// 反序列化$string中的數(shù)據(jù)$newvar = unserialize($string); // 打印未序列化的數(shù)據(jù)print_r($newvar);?
輸出:
Array [0] = hello [1] = 42 [2] = Array [0] = 1 [1] = two [3] = apple)
這是本機(jī)PHP序列化方法。但是,由于JSON近年來變得如此受歡迎,他們決定在PHP 5.2中添加對它的支持。現(xiàn)在,您可以使用json_encode()和json_decode()函數(shù)分別在PHP中序列化和反序列化數(shù)據(jù)。
由于JSON格式僅為文本格式,因此可以輕松地將其發(fā)送到服務(wù)器或從服務(wù)器發(fā)送,并且可以通過任何編程語言用作數(shù)據(jù)格式。
讓我們看看如何在PHP中使用json_encode():
?php // 一個復(fù)雜的數(shù)組$myvar = array( hello , 42, array(1, two ), apple // 序列化數(shù)據(jù)$string = json_encode($myvar); // 打印序列化的數(shù)據(jù)echo $string; ?
輸出:
[ hello ,42,[1, two ], apple ]
我們可以使用json_decode()函數(shù)解碼上面程序中編碼的數(shù)據(jù),以獲得原始復(fù)雜數(shù)組。
程序如下:
?php // 一個復(fù)雜的數(shù)組$myvar = array( hello , 42, array(1, two ), apple // 序列化數(shù)據(jù)$string = json_encode($myvar); // 解碼上面編碼的字符串$newvar = json_decode($string); // 打印解碼后的數(shù)據(jù)print_r($newvar); ?
輸出:
Array [0] = hello [1] = 42 [2] = Array [0] = 1 [1] = two [3] = apple)
以上就是PHP如何序列化數(shù)據(jù)?的詳細(xì)內(nèi)容,PHP教程
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。
新聞熱點
疑難解答
圖片精選