PHP では、JSON は構造化データを表すために使用できる一般的なデータ形式です。 JSON 形式のデータは、異なるシステム間で簡単に転送および解析できます。 PHP では、次のコードを使用して JSON 文字列を配列に変換できます。
$json_str = '{"name":"John","age":30,"city":"New York"}'; $arr = json_decode($json_str, true);
このうち、json_decode
関数は、JSON 形式の文字列を PHP 配列にデコードするために使用されます。最初のパラメータはデコードする JSON 文字列で、2 番目のパラメータは結果を連想配列にデコードするかどうかを示すブール値です。 true
に設定した場合、結果は連想配列になります。false
またはこのパラメーターを省略した場合、結果は単純なインデックス付き配列になります。
JSON 文字列を配列に変換することに加えて、PHP 配列を JSON 形式の文字列に変換することもできます。
$arr = array('name' => 'John', 'age' => 30, 'city' => 'New York'); $json_str = json_encode($arr);
ここでは、json_encode
関数を使用して PHP を変換します。配列は JSON 形式の文字列としてエンコードされ、文字列が返されます。 PHP 配列に UTF-8 以外でエンコードされた文字列が含まれている場合は、まずそれらを UTF-8 エンコードに変換してからエンコードする必要があることに注意してください。次のように、変換に mb_convert_encoding
関数を使用できます。
$arr = array('name' => '张三', 'age' => 30, 'city' => '北京'); $arr_utf8 = array_map(function($item){ return mb_convert_encoding($item, 'UTF-8', 'GBK'); }, $arr); $json_str = json_encode($arr_utf8, JSON_UNESCAPED_UNICODE);
ここでは、array_map
関数を使用して、配列内の各要素を反復処理し、UTF に変換します。 8エンコーディング。 2 番目のパラメータ JSON_UNESCAPED_UNICODE
は、中国語の文字をエスケープせず、そのまま出力することを意味します。
PHP 配列を JSON 文字列に変換するだけでなく、オブジェクトを JSON 文字列に変換することもできます。この場合、オブジェクトをシリアル化する必要があります。これは通常、jsonSerialize
メソッドを通じて実現されます:
class Person { public $name; public $age; public $city; public function __construct($name, $age, $city) { $this->name = $name; $this->age = $age; $this->city = $city; } public function jsonSerialize() { return [ 'name' => $this->name, 'age' => $this->age, 'city' => $this->city ]; } } $person = new Person('John', 30, 'New York'); $json_str = json_encode($person);
ここで、Person
クラスは jsonSerialize# を実装します。 ## メソッド。オブジェクトを連想配列に変換し、
json_encode 関数を使用して JSON 形式の文字列にエンコードします。
以上がPHP JSONで配列を変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。