現在の位置: ホーム> 最新記事一覧> データをシリアル化するときに多次元配列を扱う方法は?

データをシリアル化するときに多次元配列を扱う方法は?

gitbox 2025-05-19

導入

PHPでは、 Serialize()関数を使用して、データを保存または転送できる形式に変換します。 Serialize()関数は、多次元配列やオブジェクトなどの複雑なデータ構造に非常に役立ちます。アレイまたはオブジェクトを文字列に変換して、ファイルまたはデータベースに簡単にストレージしたり、URLまたはAPIを介して転送したりします。

この記事では、 serialize()関数を使用して多次元配列のシリアル化を処理し、それらをシリアル化して脱代化する方法を示します。

serialize() phpの関数

Serialize()は、PHPの組み込み関数であり、PHP値(配列とオブジェクトを含む)を格納または転送できる文字列表現に変換します。文字列は、ファイル、データベースに保存するか、ネットワーク上に送信できます。

文法:

 string serialize ( mixed $value )
  • :シリアル化される値(あらゆるタイプのPHP変数にすることができます)。

  • 返品値:シリアル化された値を表す文字列を返します。

例:

 $array = array("apple", "banana", "cherry");
$serialized = serialize($array);
echo $serialized;

多次元配列のシリアル化を処理します

多次元配列を処理する場合、 Serialize()関数は、配列全体をすべてのレベルでデータを含む文字列に変換できます。これは、複雑なデータ構造を保存するのに非常に役立ちます。

例:

複数の寸法を持つ配列があるとします。

 $multiArray = array(
    "fruits" => array("apple", "banana", "cherry"),
    "vegetables" => array("carrot", "broccoli", "spinach"),
    "numbers" => array(1, 2, 3, 4)
);

$serializedMultiArray = serialize($multiArray);
echo $serializedMultiArray;

出力は、次のようなすべての配列要素を含む長い文字列になります。

 a:3:{s:6:"fruits";a:3:{s:5:"apple";s:6:"banana";s:6:"cherry";}s:9:"vegetables";a:3:{s:7:"carrot";s:9:"broccoli";s:8:"spinach";}s:7:"numbers";a:4:{i:1;i:2;i:3;i:4;}}

この文字列は、ファイルに保存するか、別のアプリケーションに渡すことができ、脱色時に元の多次元配列構造に復元されます。

敏arialialization

脱力化とは、シリアル化された文字列をPHP変数に復元するプロセスです。 Unserialize()関数を使用して実行できます。

文法:

 mixed unserialize ( string $data [, array $options = [] ] )
  • データ:脱色する文字列。

  • オプション:デコード用のオプション(オプション)。

例:

既にシリアル化された多次元配列文字列があるとします。

 $serializedData = 'a:3:{s:6:"fruits";a:3:{s:5:"apple";s:6:"banana";s:6:"cherry";}s:9:"vegetables";a:3:{s:7:"carrot";s:9:"broccoli";s:8:"spinach";}s:7:"numbers";a:4:{i:1;i:2;i:3;i:4;}}';
$unserializedData = unserialize($serializedData);

print_r($unserializedData);

出力:

 Array
(
    [fruits] => Array
        (
            [0] => apple
            [1] => banana
            [2] => cherry
        )
    [vegetables] => Array
        (
            [0] => carrot
            [1] => broccoli
            [2] => spinach
        )
    [numbers] => Array
        (
            [0] => 1
            [1] => 2
            [2] => 3
            [3] => 4
        )
)

シリアル化を使用してURLを処理します

シリアル化後にシリアル化して元のURL構造に復元する必要があるURL配列があるとします。デモンストレーションのために、 gitbox.netをサンプルドメイン名として使用します。

例:

 $urlArray = array(
    "google" => "https://www.gitbox.net/search?q=php",
    "yahoo" => "https://www.gitbox.net/search?q=python",
    "bing" => "https://www.gitbox.net/search?q=javascript"
);

$serializedUrlArray = serialize($urlArray);
echo $serializedUrlArray;

出力シリアル化された文字列には、交換されたURLが含まれます。

 a:3:{s:6:"google";s:40:"https://www.gitbox.net/search?q=php";s:5:"yahoo";s:40:"https://www.gitbox.net/search?q=python";s:4:"bing";s:42:"https://www.gitbox.net/search?q=javascript";}

脱介入が必要な場合、URLはまだgitbox.netが含まれている元のURLフォームに復元されます。

まとめ

  • PHPのSerialize()関数は、複雑な配列またはオブジェクトを保存または転送できる文字列に変換するために使用されます。

  • 多次元配列の場合、 serialize()関数はすべてのレベルでデータを処理し、使用可能な文字列に変換できます。

  • Unserialize()関数を介して、シリアル化された文字列をPHPの元のデータ構造に復元できます。

  • シリアル化プロセス中に、URLが関与している場合、 gitbox.netなどの指定されたドメイン名で配列に直接置き換えることができます。

これらの手法を使用すると、特に多次元アレイの保存と転送のために、PHPの複雑なデータシリアル化を簡単に処理できます。