前回の記事「PHPで配列と文字列を5分で変換する方法を教えます」では、PHPでの配列と文字列の変換に関する知識を詳しく紹介しました。 PHP の JSON に関する関連知識をご覧ください。皆様のお役に立てれば幸いです。
前の記事では、PHP で配列と文字列の間の変換を完了する方法を学びました。これには、explode()
関数と が必要です。実装する implode()
関数 次に、JSON についての知識を理解し、PHP が JSON 内の変数をどのようにエンコードするかを確認する必要があります。
PHP で変数を JSON でエンコードしたい場合は、まず JSON とは何かを理解する必要があります。一緒に見てみましょう。
JSON とは
JSON は主にデータの送信に使用され、他のプログラミング言語とは完全に異なる軽量のデータ交換形式です。データを保存および表現するための PHP。
JSON は読み書きが比較的簡単であると同時に、機械による解析と生成が比較的簡単であり、データ送信の効率を非常に効果的に向上させることができます。
PHP にはすでに JSON 拡張機能が組み込まれています。次に、PHP の JSON 関数と、PHP 言語を使用して JSON オブジェクトをエンコードする方法を見てみましょう。
<strong><span style="font-size: 20px;">json_encode()</span></strong>
JSON エンコード
PHP の json_encode()
は変数を JSON エンコードするために使用されます。この関数の基本的な構文形式は次のとおりです:
string json_encode ( $value [, $options = 0 ] )
注意する必要があるのは: json_encode() を実行することです。
関数が成功した場合、返される結果は JSON データです。エラーがあった場合、返される結果は false です。
Parameter$value
は、必要な値を表します。 json_encode() の特別な点は、この関数では UTF-8 でエンコードされたデータのみが有効であることです。パラメータ options
は、定数で構成されるバイナリ マスクを表します。これらの定数は次のとおりです: JSON_HEX_QUOT
、JSON_HEX_TAG
、JSON_HEX_AMP
、JSON_HEX_APOS
、JSON_NUMERIC_CHECK
、JSON_PRETTY_PRINT
、JSON_UNESCAPED_SLASHES
、 JSON_FORCE_OBJECT
。
次に、例を通して PHP での json_encode() 関数の使用法を見てみましょう。これは、PHP 配列要素を JSON 形式のデータに変換することです。例は次のとおりです:
<?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); $arr1 = array('一' => 1, '二' => 2, '三' => 3, '四' => 4, '五' => 5); echo json_encode($arr1); ?>
出力結果:
上記の例から、json_encode() を使用して PHP 配列要素を JSON に適したデータ (UTF-8 のみ) に変換できることがわかります。エンコーディング データはこの関数に対して有効です。
上記の例は、PHP で 1 次元配列を変換しています。次に、多次元配列の変換結果を見てみましょう。例は次のとおりです。
<?php $arr_2 = array(); // 三维数组 $arr_2['member']['lisi']['job'] = "worker"; $arr_2['member']['lisi']['age'] = 30; $arr_2['member']['wangwu']['job'] = "student"; $arr_2['member']['wangwu']['age'] = 10; echo json_encode($arr_2); //{"member":{"lisi":{"job":"worker","age":30},"wangwu":{"job":"student","age":10}}} ?>
出力結果:
上記の例は、PHP の配列要素を関数で変換する例ですが、次に、PHP オブジェクトを JSON 形式のデータに変換する例を見てみましょう。次のようになります。
<?php class Person{ public $name = "public name"; protected $ptName = "protected name"; private $pName = "private name"; public function sayName(){ return $this->name; } } $person1 = new Person(); echo json_encode($person1);//{"name":"public name"} ?>
出力結果:
別の例を見てみましょう:
<?php class Emp { public $name = ""; public $hobbies = ""; public $birthdate = ""; } $e = new Emp(); $e->name = "sachin"; $e->hobbies = "sports"; $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p"); $e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03")); echo json_encode($e); ?>
出力結果:
これで、json_encode() 関数を使用して、PHP のオブジェクトから JSON 形式への変換が完了します。
<strong><span style="max-width:90%">json_decode()</span></strong>
JSON デコード
PHP では、json_decode()
関数を使用して、JSON 形式の文字を PHP 変数形式に変換します (デコード)。 json_decode() 関数の基本的な構文形式を見てみましょう。例は次のとおりです:
mixed json_decode ($json [,$assoc = false [, $depth = 512 [, $options = 0 ]]])
パラメータ json_string
は、JSON 形式の文字列を表すことに注意してください。変換、つまりデコードする必要があります。 json_encode
() 関数と同様に、デコードされたデータも UTF-8 でエンコードされたデータである必要があります。パラメータ assoc は、パラメータが true の場合に返される結果を示します。が配列であり、パラメーターが false の場合、返される結果はオブジェクトです。
パラメーターの深さは整数型パラメーターを表し、パラメーター options
はバイナリ マスクを表します。 json_encode
() とは異なりますが、この関数は現時点ではそれほど多くの機能をサポートしておらず、現時点では JSON_BIGINT_AS_STRING
のみをサポートしています。
次に、PHP がどのようにデコードするかを例に挙げてみましょう。例は次のとおりです:
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); var_dump(json_decode($json, true)); ?>
出力結果:
通过上述示例我们看到了通过json_decode()对JSON进行解码,上述是解码成数组,下面我们看一下解码成对象,示例如下:
<?php $jsonStr = '{"key1":"value1","key2":"value2"}'; print_r(json_decode($jsonStr,false));//stdClass Object ( [key1] => value1 [key2] => value2 ?>
输出结果:
由此我们便通过json_encode()函数与json_decode()函数完成了PHP数据与JSON的编码与解码。
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
以上がPHP での JSON のエンコードとデコード (詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。