ホームページ  >  記事  >  バックエンド開発  >  PHP シリアル化と JSON 解析の詳細な例_PHP チュートリアル

PHP シリアル化と JSON 解析の詳細な例_PHP チュートリアル

WBOY
WBOYオリジナル
2016-07-15 13:26:16923ブラウズ

JSON は、標準 ECMA-262 第 3 版 - 1999 年 12 月のサブセットである JavaScript プログラミング言語に基づいています。 JSON は完全に言語に依存しないテキスト形式を使用しますが、C 言語ファミリー (C、C++、C#、Java、JavaScript、Perl、Python など) に似た規則も使用します。これらの特性により、JSON は理想的なデータ交換言語になります。

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

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

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

PHP のシリアル化は、変数をシリアル化し、変数の型と構造を含む文字列式を返すことです。
どちらも文字列の形式でデータ構造を具体化するので、違いは何ですか。

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

例1:

<ol class="dp-c">
<li class="alt"><span><span class="keyword"><strong><font color="#006699">var</font></strong></span><span> test = {</span><span class="string"><font color="#0000ff">"Name"</font></span><span>:</span><span class="string"><font color="#0000ff">"Peter"</font></span><span>,</span><span class="string"><font color="#0000ff">"Age"</font></span><span>:20};  </span></span></li>
<li>
<span>document.write(test.Name + </span><span class="string"><font color="#0000ff">": "</font></span><span> + test.Age); </span>
</li>
</ol>

表示結果:

Peter:20

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

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

例 2:

<ol class="dp-xml">
<li class="alt"><span><span>var </span><span class="attribute"><font color="#ff0000">test</font></span><span> = {"User":{"Name":"Peter","Age":20},"Company":"FORD"};  </span></span></li>
<li><span>document.write(test.User.Name + ": " + test.Company); </span></li>
</ol>

表示結果:

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

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

JSON 解析例 3:

<ol class="dp-xml">
<li class="alt"><span><span>var </span><span class="attribute"><font color="#ff0000">test</font></span><span> = [  </span></span></li>
<li><span>                 {"User":{"Name":"Peter","Age":20},"Company":"FORD"},  </span></li>
<li class="alt"><span>                 {"User":{"Name":"Li Ming","Age":20},"Company":"Benz"}  </span></li>
<li><span>              ];  </span></li>
<li class="alt"><span>document.write(test[1].User.Name + ": " + test[1].Company);  </span></li>
<li><span>//或者使用:document.write(test[1]["User"]["Name"] + ": " + test[1]["Company"]); </span></li>
</ol>

JSON 解析表示結果:

Li Ming: Benz

上記の単純な例を通じて、いくつかの複雑なデータを文字列を介して転送することができ、Ajax と連携する方が確かに便利です。 。
PHP のシリアライズ関数の役割を見てみましょう。

JSON 解析の例 4:

<ol class="dp-xml">
<li class="alt"><span><span>$</span><span class="attribute"><font color="#ff0000">arr</font></span><span> = </span><span class="attribute-value"><font color="#0000ff">array</font></span><span> </span></span></li>
<li><span>       (  </span></li>
<li class="alt">
<span>          'Peter'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> array  </span>
</li>
<li><span>          (  </span></li>
<li class="alt">
<span>            'Country'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>'USA',  </span>
</li>
<li>
<span>            'Age'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>20  </span>
</li>
<li class="alt"><span>          ),  </span></li>
<li>
<span>          'Li Ming'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span> array  </span>
</li>
<li class="alt"><span>          (  </span></li>
<li>
<span>             'Country'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>'CHINA',  </span>
</li>
<li class="alt">
<span>             'Age'=</span><span class="tag"><strong><font color="#006699">></font></strong></span><span>21  </span>
</li>
<li><span>          )  </span></li>
<li class="alt"><span>        );  </span></li>
<li><span> </span></li>
<li class="alt">
<span>$</span><span class="attribute-value"><font color="#0000ff">serialize</font></span><span class="attribute"><font color="#ff0000">serialize_var</font></span><span> = serialize($arr);  </span>
</li>
<li><span>echo $serialize_var; </span></li>
</ol>

JSON 解析の表示結果:

<ol class="dp-xml"><li class="alt"><span><span>a:2:{s:5:"Peter";a:2:{s:7:"Country";s:3:"USA";s:3:"Age";i:20;}s:7:"Li Ming";a:2:{s:7:"Country";s:5:"CHINA";s:3:"Age";i:21;}} </span></span></li></ol>

この結果は 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:

<ol class="dp-c">
<li class="alt"><span><span class="keyword"><strong><font color="#006699">class</font></strong></span><span> test  </span></span></li>
<li><span>{  </span></li>
<li class="alt">
<span>    </span><span class="keyword"><strong><font color="#006699">var</font></strong></span><span> </span><span class="vars"><font color="#dd0000">$var</font></span><span> = 0;  </span>
</li>
<li>
<span>    </span><span class="keyword"><strong><font color="#006699">function</font></strong></span><span> add(){  </span>
</li>
<li class="alt">
<span>      </span><span class="func">echo</span><span> </span><span class="vars"><font color="#dd0000">$var</font></span><span>+10;  </span>
</li>
<li><span>    }  </span></li>
<li class="alt"><span>}  </span></li>
<li><span> </span></li>
<li class="alt">
<span></span><span class="vars"><font color="#dd0000">$unserialize_var</font></span><span> = </span><span class="keyword"><strong><font color="#006699">new</font></strong></span><span> test;  </span>
</li>
<li>
<span></span><span class="vars"><font color="#dd0000">$serialize_var</font></span><span> = serialize(</span><span class="vars"><font color="#dd0000">$unserialize_var</font></span><span>);  </span>
</li>
<li class="alt">
<span></span><span class="func">echo</span><span> </span><span class="vars"><font color="#dd0000">$serialize_var</font></span><span>;  </span>
</li>
<li>
<span></span><span class="vars"><font color="#dd0000">$unserialize_var</font></span><span> = null;  </span>
</li>
<li class="alt">
<span></span><span class="vars"><font color="#dd0000">$unserialize_var</font></span><span> = unserialize(</span><span class="vars"><font color="#dd0000">$serialize_var</font></span><span>);  </span>
</li>
<li>
<span></span><span class="vars"><font color="#dd0000">$unserialize_var</font></span><span>->add(); </span>
</li>
</ol>

表示結果:

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:

<ol class="dp-c">
<li class="alt"><span><span class="vars"><font color="#dd0000">$arr</font></span><span> = </span><span class="keyword"><strong><font color="#006699">array</font></strong></span><span> </span></span></li>
<li><span>       (  </span></li>
<li class="alt">
<span>          </span><span class="string"><font color="#0000ff">'Name'</font></span><span>=></span><span class="string"><font color="#0000ff">'Peter'</font></span><span>,  </span>
</li>
<li>
<span>          </span><span class="string"><font color="#0000ff">'Age'</font></span><span>=>20  </span>
</li>
<li class="alt"><span>       );  </span></li>
<li><span> </span></li>
<li class="alt">
<span></span><span class="vars"><font color="#dd0000">$jsonencode</font></span><span> = json_encode(</span><span class="vars"><font color="#dd0000">$arr</font></span><span>);  </span>
</li>
<li>
<span></span><span class="func">echo</span><span> </span><span class="vars"><font color="#dd0000">$jsonencode</font></span><span>; </span>
</li>
</ol>

表示結果:

{"Name":"Peter","Age":20}

この結果は例1のテスト値と同じです。json_encodeを使用して変数を変換しますPHP では式を JSON 文字に変換します。

json_decodeの使い方を見てみましょう。

例 7:

<ol class="dp-c">
<li class="alt"><span><span class="vars"><font color="#dd0000">$var</font></span><span> = </span><span class="string"><font color="#0000ff">'{"Name":"Peter","Age":20}'</font></span><span>;  </span></span></li>
<li>
<span></span><span class="vars"><font color="#dd0000">$jsondecode</font></span><span> = json_decode(</span><span class="vars"><font color="#dd0000">$var</font></span><span>);  </span>
</li>
<li class="alt">
<span>print_r(</span><span class="vars"><font color="#dd0000">$jsondecode</font></span><span>); </span>
</li>
</ol>
表示結果:

<ol class="dp-c"><li class="alt"><span><span>stdClass Object ( [Name] => Peter [Age] => 20 ) </span></span></li></ol>
これは、確かに {"Name":"Peter","Age":20} が JSON のオブジェクトであることを検証しますが、配列の場合は PHP で変換することもできます。 、json_decode で ASSOC パラメータを True に設定するだけです。

例8:

<ol class="dp-c">
<li class="alt"><span><span class="vars"><font color="#dd0000">$var</font></span><span> = </span><span class="string"><font color="#0000ff">'{"Name":"Peter","Age":20}'</font></span><span>;  </span></span></li>
<li>
<span></span><span class="vars"><font color="#dd0000">$jsondecode</font></span><span> = json_decode(</span><span class="vars"><font color="#dd0000">$var</font></span><span>,true);  </span>
</li>
<li class="alt">
<span>print_r(</span><span class="vars"><font color="#dd0000">$jsondecode</font></span><span>); </span>
</li>
</ol>
表示結果:

<ol class="dp-c"><li class="alt"><span><span>Array ( [Name] => Peter [Age] => 20 ) </span></span></li></ol>
なお、JSONはUnicode形式に基づいているため、中国語で操作する場合はUTF-8形式に変換する必要があります。上記の例を通じて、JSON と PHP の Serialize と json_encode については予備的に理解できたと思います。PHP、JavaScript、JSON、Ajax を組み合わせることで、強力なデータ インタラクション関数が完成します。


http://www.bkjia.com/PHPjc/446610.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/446610.html技術記事 JSON は、JavaScript プログラミング言語、標準 ECMA-262 第 3 版 (1999 年 12 月) のサブセットに基づいています。 JSON は完全に言語に依存しないテキスト形式を使用しますが、次のような形式も使用します...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。