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

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

Jul 15, 2016 pm 01:26 PM
javascript json php programming serialize そして に基づく 解析する 詳しい説明

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">&gt;</font></strong></span><span> array  </span>
</li>
<li><span>          (  </span></li>
<li class="alt">
<span>            'Country'=</span><span class="tag"><strong><font color="#006699">&gt;</font></strong></span><span>'USA',  </span>
</li>
<li>
<span>            'Age'=</span><span class="tag"><strong><font color="#006699">&gt;</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">&gt;</font></strong></span><span> array  </span>
</li>
<li class="alt"><span>          (  </span></li>
<li>
<span>             'Country'=</span><span class="tag"><strong><font color="#006699">&gt;</font></strong></span><span>'CHINA',  </span>
</li>
<li class="alt">
<span>             'Age'=</span><span class="tag"><strong><font color="#006699">&gt;</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>-&gt;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>=&gt;</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>=&gt;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] =&gt; Peter [Age] =&gt; 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] =&gt; Peter [Age] =&gt; 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 までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

See all articles