ホームページ  >  記事  >  バックエンド開発  >  phpシリアル化の使い方まとめ(コード例)

phpシリアル化の使い方まとめ(コード例)

不言
不言オリジナル
2019-01-14 13:22:194761ブラウズ

シリアル化では、配列などを配列として保存することができます。また、メールの送受信にも使用できます。わかりにくいかもしれません。この記事では、PHP のシリアル化の内容を紹介します。

phpシリアル化の使い方まとめ(コード例)

配列をデータベースに保存すると、通常は何が起こりますか?

次の配列をデータベースに登録してみます。

["student1", "student2", "student3"]

それでは再度取得してみます

'Array("student1", "student2", "student3")'

取得したのは文字列ですが、シリアル化せずにデータベースに登録した後、再度取得すると文字列になります。

foreach ステートメントを使用してこの文字列を取得することはできません。

配列はデータベースに配列として登録する必要があり、シリアル化を使用する必要があります。

シリアル化を使用しましょう

シリアル化するには、serialize 関数を使用する必要があります

さらに、結果は何を行うかによって異なります。シリアル化されたデータ型である必要があります。

シリアル化された配列

実行結果は

a:3:{i:0;s:8:"student1";i:1;s:8:"student2";i:2;s:8:"student3";}

最初の [a:3] 部分が [type] で終わっていることに注意してください:値]が表示されます。

は、配列の型が a であることを示します。

さらに、その後に表示されるのは、[key; value;]で表される配列データ部分です。

Serialized integer

<?php
$test = 50;
$disp = serialize($test);
echo $disp;

結果は次のようになります。

i:50;

シリアル化された文字列

<?php
$test = &#39;student&#39;;
$disp = serialize($test);
echo $disp;

結果は

s:7:"student";

となり、文字列の型が s であることを示します。

文字列の場合は数字もありますが、これは文字数を表します。

シリアル化は簡単です。

次に、シリアル化されたデータを送信するか、データベースに保存します。

デシリアライズとアンシリアライズ

シリアル化されたデータを使用するには、そのままでは使用できません。

元の型と構造を復元するには、Unserialize を使用する必要があります。

配列の逆シリアル化

";
echo print_r(unserialize($disp));

わかりやすくするために、シリアル化された $disp は改行を設定して示されています (df250b2156c434f3390392d09b1c9563)。

さらに、$disp がデシリアライズされて表示されます。

print_r は、配列の内容を表示するために使用されます。

結果は

a:3:{i:0;s:8:"student1";i:1;s:8:"student2";i:2;s:8:"student3";}
Array ( [0] => student1 [1] => student2 [2] => student3 )1

最初の行はシリアル化の結果、2行目は逆シリアル化の結果です。

整数の逆シリアル化

<?php
$test = 50;
$disp = serialize($test);
echo $disp;
echo "
"; echo unserialize($disp);

結果は

i:50;
50

文字列の逆シリアル化

<?php
$test = &#39;student&#39;;
$disp = serialize($test);
echo $disp;
echo "
"; echo unserialize($disp);

結果は

s:7:"student";
student

シリアル化されたデータの回復は簡単です。

以上がphpシリアル化の使い方まとめ(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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