大多數情況下,我們需要將複雜的陣列儲存在資料庫中或PHP中的檔案中。有些人可能會使用PHP內建函數來完成這項任務。所謂複雜數組是具有多個資料類型或數組的元素的數組。
但是,我們已經有了一個方便的解決方案來處理這種情況。我們不必編寫自己的函數來將複雜數組轉換為格式化字串。有兩種流行的變數序列化方法。 (推薦:PHP教學)
1、serialize()
2、unserialize()
我們可以使用serialize()函數序列化PHP中的任何資料。 serialize()函數接受一個參數,該參數是我們想要分類的資料並傳回一個序列化的字串。
程式如下:
<?php //一个复杂的数组 $myvar = array( 'hello', 42, array(1, 'two'), 'apple' ); // 转换成字符串 $string = serialize($myvar); // 打印序列化的数据 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";}
從上面的程式碼中,我們得到了一個具有序列化資料的變數$string。我們可以使用unserialize()函數來反序列化變數的值,以傳回複雜數組$myvar的原始值。
serialize()和unserialize()函數範例:
<?php // 一个复杂的数组 $myvar = array( 'hello', 42, array(1, 'two'), 'apple' ); // 序列化上述数据 $string = serialize($myvar); // 反序列化$string中的数据 $newvar = unserialize($string); // 打印未序列化的数据 print_r($newvar); ?>
輸出:
Array ( [0] => hello [1] => 42 [2] => Array ( [0] => 1 [1] => two ) [3] => apple )
這是本機PHP序列化方法。但是,由於JSON近年來變得如此受歡迎,他們決定在PHP 5.2中添加對它的支援。現在,您可以使用json_encode()和json_decode()函數分別在PHP中序列化和反序列化資料。
由於JSON格式僅為文字格式,因此可以輕鬆地將其發送到伺服器或從伺服器發送,並且可以透過任何程式語言用作資料格式。
讓我們看看如何在PHP中使用json_encode():
<?php // 一个复杂的数组 $myvar = array( 'hello', 42, array(1, 'two'), 'apple' ); // 序列化数据 $string = json_encode($myvar); // 打印序列化的数据 echo $string; ?>
輸出:
["hello",42,[1,"two"],"apple"]
我們可以使用json_decode() 函數解碼上面程式中編碼的數據,以獲得原始複雜數組。
程式如下:
<?php // 一个复杂的数组 $myvar = array( 'hello', 42, array(1, 'two'), 'apple' ); // 序列化数据 $string = json_encode($myvar); // 解码上面编码的字符串 $newvar = json_decode($string); // 打印解码后的数据 print_r($newvar); ?>
輸出:
Array ( [0] => hello [1] => 42 [2] => Array ( [0] => 1 [1] => two ) [3] => apple )
以上是PHP如何序列化資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!