ホームページ バックエンド開発 PHPチュートリアル PHP で変数をシリアル化および逆シリアル化する方法

PHP で変数をシリアル化および逆シリアル化する方法

Jun 20, 2016 pm 01:04 PM
PHP変数

シリアル化は、変数を保存または送信できる文字列に変換するプロセスです。逆シリアル化は、適切なときに使用できるように文字列を元の変数に変換することです。

これら 2 つのプロセスを組み合わせることで、データの保存と転送が容易になり、プログラムの保守性が向上します。

1. シリアル化関数とアンシリアル化関数。これら 2 つは、PHP でデータをシリアル化および逆シリアル化するための一般的な関数です。

$a=array('a'=>'Apple','b'=>'banana','c'=>'Coconut');

//配列をシリアル化
$s=serialize($a);
echo $s;
//出力結果: a:3:{s:1:"a";s:5:"Apple";s: 1 :"b";s:6:"バナナ";s:1:"c";s:7:"ココナッツ";}

//逆シリアル化
$o=unserialize( $s) ;
print_r($o);

//出力結果:

array('a'=>'Apple','b'=>'バナナ ',' c'=>'Coconut')

ただし、配列値に二重引用符、一重引用符、コロンなどの文字が含まれている場合、逆シリアル化した後に問題が発生する可能性があります。

この問題を解決するには、base64_encode 関数とbase64_decode 関数を使用するという巧妙な方法があります。

$obj=array();

//シリアル化
$s=base64_encode(serialize($obj));
//逆シリアル化

$original=unserialize (base64_decode($s)); Base64 エンコードにより文字列の長さが増加するため、これは完全な解決策ではありません。この問題を解決するには、次のように gzcompress と併用します。

//オブジェクトをシリアル化する関数を定義します

function my_serialize($obj){
returnbase64_encode(gzcompress(serialize($obj)))

//逆シリアル化
function my_unserialize($txt){
return unserialize(gzuncompress(base64_decode($txt)));

}

2. JSON 形式のシリアル化と逆シリアル化を使用します。これは良い選択です。つまり、json_encode と json_decode は、json_encode と json_decode 形式の出力を使用して、形式をより高速にシリアル化およびシリアル化解除します。

JSON 形式は読み取り可能であり、シリアル化よりも小さいデータを返します。また、JSON 形式はオープンで移植可能です。他の言語でも使用できます。具体的な使用例は次のとおりです。

$a=array('a'=>'Apple','b'=>'banana','c '=>' ココナッツ');

//シリアル化された配列

echo $s; ","b ":"banana","c":"Coconut"}

//Deserialization

$o=json_decode($s); 上記の例では、json_encode の出力長前の例では、シリアル化出力の長さは明らかに短くなります。

3. var_export メソッドと eval メソッド。var_export 関数は変数を文字列として出力し、eval は文字列を PHP コードとして実行し、元の変数の内容を取得します。

$a=array('a'=>'Apple','b'=>'banana','c'=>'Coconut');

//配列をシリアル化

$s=var_export($a,true);

echo $s>//出力結果: array('a'=>'Apple','b'=>'banana' , 'c'=>'ココナッツ')


//逆シリアル化
eval('$my_var='.$s.';');

print_r($ my_var);

4. wddx_serialize_value および wddx deserialize メソッド、wddx_serialize_value 関数は配列変数をシリアル化し、XML 文字列として出力できます。

$a=array('a'=>'Apple','b'=>'banana','c'=>'Coconut');

//配列をシリアル化

$s=wddx_serialize_value($a);

echo $s;

//出力結果 (出力文字列のソースコードを表示): ApplebananaCoconut


//逆シリアル化
$ o=wddx_deserialize($s);
print_r($o);

//出力結果: Array([a]=>Apple[b]=>バナナ 1=>ココナッツ)

XML タグ文字が多数あるため、この形式のシリアル化には依然として多くのスペースが必要であることがわかります。

結論: 上記の関数はすべて、配列変数をシリアル化する場合には正常に実行できますが、オブジェクトに適用すると異なります。

たとえば、json_encode シリアル化オブジェクトは失敗します。オブジェクトを逆シリアル化する場合、unserialize と eval の効果は異なります。

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

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

PHP 注意: 未定義の変数: 解決策 PHP 注意: 未定義の変数: 解決策 Jun 25, 2023 pm 04:18 PM

PHP 開発では、PHP Notice:Unknownvariable というエラー メッセージが頻繁に発生します。このエラー メッセージは、コード内で未定義の変数が使用されたことを意味します。このエラー メッセージによってコードがクラッシュすることはありませんが、コードの可読性と保守性に影響します。以下、この記事ではこのエラーを解決するいくつかの方法を紹介します。 1. 開発プロセス中に error_reporting(E_ALL) 関数を使用します。PHP 開発では、次のことができます。

PHP 注意: 未定義の変数: ソリューション内の arr PHP 注意: 未定義の変数: ソリューション内の arr Jun 22, 2023 am 10:21 AM

PHP Notice:Unknownvariable:arrin の解決策 PHP プログラミングでは、「 Notice:Unknownvariable」というエラー メッセージが頻繁に表示されます。このエラー メッセージは通常、未定義の変数にアクセスしたか、変数が初期化されていないことが原因で発生します。この問題については、問題を見つけて時間内に解決する必要があります。この記事では、PHP Notice:Undefin に焦点を当てます。

PHP で数値変数を使用する方法 PHP で数値変数を使用する方法 Sep 13, 2023 pm 12:46 PM

PHP で数値変数を使用する方法 PHP では、数値変数は、宣言せずに直接使用される変数の型です。数値変数を使用して、数学的計算、データ比較、その他の数値演算を実行できます。この記事では、PHP で数値変数を使用する方法を説明し、具体的なコード例を示します。数値変数の定義 PHP では、数値変数の定義は非常に簡単で、変数に直接数値を割り当てるだけです。以下に例を示します: $number=10; 上記のコードでは、$numb という値を定義します。

PHP 変数の未定義エラーをすばやく排除するにはどうすればよいですか? PHP 変数の未定義エラーをすばやく排除するにはどうすればよいですか? Dec 17, 2023 am 10:23 AM

PHP 変数の未定義エラーをすばやく排除するにはどうすればよいですか? PHP 開発では、未定義変数エラーがよく発生します。これは、コード内で未割り当ての変数が使用されているためです。この種のエラーが発生した場合、エラーの原因を迅速に特定して解決する必要があります。ここでは、PHP 変数の未定義エラーを迅速にトラブルシューティングして、エラーをより迅速に見つけて修正するためのいくつかの方法を示します。エラーレポートをオンにする: エラーレポートをオンにすると、PHP は変数未定義エラーを含むすべてのエラーおよび警告メッセージを表示します。コードを開くことでこれを行うことができます

PHP 注意: 未定義の変数: SQL ソリューション PHP 注意: 未定義の変数: SQL ソリューション Jun 23, 2023 am 08:51 AM

PHP アプリケーションを開発するときに、「未定義の変数: sql」というプロンプトが表示された場合は、通常、未定義の変数を参照していることを意味します。これには、変数名のスペルミス、スコープの問題、コード内の構文エラーなど、さまざまな理由が考えられます。この記事では、この問題のさまざまな原因を調査し、それを解決するいくつかの方法を提供します。 1. 変数名のスペルが間違っている PHP コード内で変数名が間違っているか、スペルが間違っている場合、システムは

PHP変数を参照によって渡す方法 PHP変数を参照によって渡す方法 Aug 26, 2023 am 09:01 AM

PHP では、アンパサンド (&) 記号を使用して、値ではなく参照によって変数を渡すことができます。これにより、関数またはメソッド内で元の変数を変更できるようになります。 PHP 変数を参照渡しするには、主に 2 つの方法があります。 アンパサンド記号を使用する 関数/メソッド宣言でアンパサンド記号を使用する 関数/メソッド宣言でアンパサンド記号を使用する 関数/メソッドに変数を渡す場合、PHP では関数/ アンパサンド記号 ( &) メソッド宣言で変数を参照渡しします。更新された説明は次のとおりです。関数/メソッド宣言で & 記号を使用して参照変数を渡すには、関数/メソッド定義のパラメーター名の前に & 記号を含める必要があります。これは、パラメーターが参照によって渡される必要があることを示します。

PHP に関する解決策 注意: 未定義の変数: 結果 PHP に関する解決策 注意: 未定義の変数: 結果 Jun 22, 2023 pm 01:32 PM

PHP Notice:Unknownvariable:result は、PHP プログラムで未定義変数の結果が呼び出され、プログラムが通知レベルの警告を生成することを意味します。この状況は通常、プログラマが PHP コードを作成するときに変数または変数のスコープを正しく定義していないことが原因で発生します。この通知レベルの警告が時間内に解決されない場合、プログラムの動作に問題が発生する可能性があります。したがって、PHP Notice を解決する方法は次のとおりです。

PHP プログラミングで一般的な変数は何ですか? PHP プログラミングで一般的な変数は何ですか? Jun 12, 2023 am 10:06 AM

PHP プログラミングでは、変数は値を保存する基本単位であり、プログラム実行中にデータを保存および使用するために使用されます。 PHP では、変数に整数、浮動小数点、文字列、配列などのさまざまなデータ型を割り当てることができます。この記事では、PHP プログラミングにおける一般的な変数とその使用法を紹介します。単純変数は最も一般的な変数タイプであり、整数、浮動小数点数、文字列などの通常のデータ型を格納できます。 PHP では、未定義の変数の初期値は NULL です。以下にいくつかの例を示します。 整数変数: $

See all articles