ホームページ  >  記事  >  バックエンド開発  >  PHP シリアル化と JSON 解析

PHP シリアル化と JSON 解析

WBOY
WBOYオリジナル
2016-06-23 14:32:05797ブラウズ

JSON (JavaScript Object Notation) は軽量のデータ交換形式です。人間にとって読み書きしやすい。機械による解析と生成も簡単です。これは、JavaScript プログラミング言語、標準 ECMA-262 第 3 版 (1999 年 12 月) のサブセットに基づいています。 JSON は完全に言語に依存しないテキスト形式を使用しますが、C 言語ファミリー (C、C++、C#、Java、JavaScript、Perl、Python など) に似た規則も使用します。これらの特性により、JSON は理想的なデータ交換言語になります。

JSON は 2 つの構造から構築されます:

名前と値のペアのコレクション。さまざまな言語では、オブジェクト、レコード、構造体、辞書、ハッシュ テーブル、キー付きリスト、または連想配列として理解されます。

値の順序付きリスト。ほとんどの言語では、これは配列として理解されます。


PHP のシリアライズとは、変数をシリアル化して、変数の型と構造を含む文字列式を返すことです
そういえば、どちらもデータ構造を文字列の形式で具体化しますが、両者にはどのような違いがあるのでしょうか?

JSON から始めて、簡単な例を見てみましょう。
例 1:

var test = { " Name " : " Peter " , " Age " : 20 };
document.write(test.Name + " : " + test.Age); Peter: 20

変数テストでは、{"Name":"Peter","Age":20} は 2 つの要素を持つオブジェクトです (PHP の配列のような感じです):

名前はピーター、年齢は 20 です。

もちろん、さらに複雑になる可能性があります。

例 2:

var test = { " ユーザー " :{ " 名前 " : " ピーター " 、 " 年齢 " : 20 }、 " 会社 " : " FORD " };
document.write(test.User.Name + " : " + test.Company);

表示結果:


Peter: FORD

この例では、User 要素に Name と Age が含まれています。

複数のUserを反映したい場合は、オブジェクトの「{}」とは異なり、配列を使用する必要があります。

例 3:


var test = [
" : " 李明 " , " 年齢 " : 20 }, " 会社 " : " ベンツ " }
];

document.write(test[ 1 ].User.Name + " : " + test[ 1 ].Company) ;

// または次のように使用します: document.write(test[1]["User"]["Name"] + ": " + test[1]["Company"] );

表示結果:

Li Ming : Benz

上記の簡単な例を通じて、いくつかの複雑なデータを文字列を介して転送することができ、実際に Ajax と連携する方がはるかに便利です。

PHP のシリアライズ関数の役割を見てみましょう。

例 4:


$arr = 配列
' Age ' => 20
),
' Li Ming ' >

echo $serialize_var ;

結果を表示:

a : 2 : {s : 5 : "ピーター" ;a : 2 : {s : 7 : "国" ;s : 3 : "アメリカ" ;s : 3 : "年齢" ;i : 20 ;}s : 7 : " Li Ming " ;a : 2 : {s : 7 : " Country " ;s : 5 : " CHINA " ;s : 3 : " Age " ;i : 21 ;}}

この結果は JSON よりも優れているように見えます少し複雑ですが、実際にはいくつかのデータ型と構造を説明するだけです。
a:2:{s:7:"country";s:3:"USA";s:3:"Age";i:20;} を例として挙げます:
a:2 は、これに 2 つの要素があることを示します配列 (配列)
s:7:" Country";s:3:"USA"; は最初の要素で、 s:7 はこれが 7 文字の文字列であることを示し、
の後に i: 20 が続きます。整数 (整数) 20 としても推測されます。

この例をもう一度見てみましょう。
例 5:

class test
{ var $var = 0;
function add(){
echo $var + 10;
}

$unserialize_var = new test;
$serialize_var = シリアル化 ( $unserialize_var );
echo $serialize_var = null ;
$unserialize_var -> 結果を表示します。

O : 4 : " test " : 1 : {s : 3 : " var " ;i : 0 ;}
10

この例から、シリアル化によりデータの型と構造の両方が保存されることがわかります。

アンシリアル化後に変数を保存できます。引き続き add() メソッドを使用します。

では、PHP と JSON の間には何か関係があるのでしょうか? PHP に詳しい友人なら、PHP5.2.0 では JSON 拡張機能がデフォルトのコンポーネントとして設定されていることを知っているはずです。つまり、PHP で JSON 操作を実行でき、その関数は json_encode です。 json_decode。
例 6:


$arr = array
(
sonencode = json_encode( r );
echo $jsonencode ;

表示結果:


{ " 名前 " : " ピーター " 、 " 年齢 " : 20 }
この結果は例 1 のテスト値と同じです。PHP の変数は json_encode を通じて JSON 文字に変換され、式 Mode を表現します。
json_decodeの使い方を見てみましょう。
例 7:

$var = ' {"名前":"ピーター","年齢":20} ' ;
$jsondecode = json_decode( $var )

結果を表示します:

stdClass Object ([Name] =>Peter [Age] =>20 )

これは、JSON では {"Name":"Peter","Age":20} がオブジェクトであることを検証しますが、 json_decode で ASSOC パラメータを True に設定することで、PHP の配列に変換することもできます。

例 8:

$var = ' {"Name":"Peter","Age":20} ' ;

$jsondecode = json_decode( $var , true );


results :

Array ( [Name] => Peter [Age] => 20 )

さらに、JSON は Unicode 形式に基づいているため、中国語の操作を実行するには、次のように変換する必要があることに注意してください。 UTF-8形式。

上記の例を通して、皆さんは JSON と PHP の Serialize と json_encode について予備的な理解ができたと思います。

PHP、JavaScript、JSON、Ajax を組み合わせることで、強力なデータ インタラクション関数を完成させることができます。

関連参照:

PHP JSON 関数: http://cn.php.net/manual/en/ref.json.php
JSON の概要:http://www.json.org/json-zh.html
例ネットユーザーより: http://www.only4.cn/archives/95

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