PHP シリアル化と JSON 解析の詳細な例_PHP チュートリアル
Jul 15, 2016 pm 01:26 PM
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() メソッドを使用できます。
<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>
表示結果:
json_decodeの使い方を見てみましょう。
<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>
例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>

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック











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

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