ホームページ  >  記事  >  バックエンド開発  >  PHP はどのようにしてデータをシリアル化しますか?

PHP はどのようにしてデータをシリアル化しますか?

藏色散人
藏色散人オリジナル
2019-02-25 16:07:095562ブラウズ

ほとんどの場合、複雑な配列を PHP のデータベースまたはファイルに保存する必要があります。このタスクを実行するために PHP 組み込み関数を使用する人もいるかもしれません。複合配列は、複数のデータ型または配列の要素を含む配列です。

PHP はどのようにしてデータをシリアル化しますか?

ただし、この状況に対処する便利なソリューションがすでにあります。複雑な配列をフォーマットされた文字列に変換するために独自の関数を作成する必要はありません。変数のシリアル化には 2 つの一般的な方法があります。 (推奨: 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 のサポートを追加することにしました。これで、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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。