PHP如何序列化資料?

藏色散人
發布: 2023-04-05 12:00:02
原創
5576 人瀏覽過

大多數情況下,我們需要將複雜的陣列儲存在資料庫中或PHP中的檔案中。有些人可能會使用PHP內建函數來完成這項任務。所謂複雜數組是具有多個資料類型或數組的元素的數組。

PHP如何序列化資料?

但是,我們已經有了一個方便的解決方案來處理這種情況。我們不必編寫自己的函數來將複雜數組轉換為格式化字串。有兩種流行的變數序列化方法。 (推薦:PHP教學

1、serialize()

2、unserialize()

我們可以使用serialize()函數序列化PHP中的任何資料。 serialize()函數接受一個參數,該參數是我們想要分類的資料並傳回一個序列化的字串。

程式如下:

<?php 
  
//一个复杂的数组
$myvar = array( 
    &#39;hello&#39;, 
    42, 
    array(1, &#39;two&#39;), 
    &#39;apple&#39;
); 
  
// 转换成字符串 
$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(
    &#39;hello&#39;,
    42,
    array(1, &#39;two&#39;),
    &#39;apple&#39;
);
  
// 序列化上述数据
$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( 
    &#39;hello&#39;, 
    42, 
    array(1, &#39;two&#39;), 
    &#39;apple&#39;
); 
  
// 序列化数据
$string = json_encode($myvar); 
  
// 打印序列化的数据
echo $string; 
  
?>
登入後複製

輸出:

["hello",42,[1,"two"],"apple"]
登入後複製

我們可以使用json_decode() 函數解碼上面程式中編碼的數據,以獲得原始複雜數組。

程式如下:

<?php 
  
// 一个复杂的数组
$myvar = array( 
    &#39;hello&#39;, 
    42, 
    array(1, &#39;two&#39;), 
    &#39;apple&#39;
); 
  
// 序列化数据
$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中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板