検索
ホームページバックエンド開発PHPチュートリアルPHP 言語での JSON の使用と json の配列への復元、json array_PHP チュートリアル

PHP言語でJSONを使用し、jsonを配列、json配列に復元します

以前、phpでjsonデータを返す簡単な例を書きましたが、ネットにアクセスしたところ、jsonも紹介されている記事を突然見つけました。参考にしてみてください。内容は以下の通りです

バージョン 5.2 以降、PHP は json_encode() 関数と json_decode() 関数をネイティブに提供し、前者はエンコードに使用され、後者はデコードに使用されます。

1. json_encode()

1 2 3 4 <?php $arr array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5); echo json_encode($arr); ?>

出力

1 {"a":1,"b":2,"c":3,"d":4,"e":5}

オブジェクト変換の別の例を見てください:

1 2 3 4 5 6 $obj->body           = 'another post'; $obj->id             = 21; $obj->approved       = true; $obj->favorite_count = 1; $obj->status         = NULL; echo json_encode($obj);

出力

1 2 3 4 5 6 7 8 9 10 11 {    "body":"another post",      "id":21,      "approved":true,      "favorite_count":1,      "status":null  }

json は utf-8 でエンコードされた文字のみを受け入れるため、 json_encode() のパラメーターは utf-8 でエンコードされている必要があります。そうしないと、空の文字または null が返されます。中国語で GB2312 エンコードを使用する場合、または外国語で ISO-8859-1 エンコードを使用する場合は、この点に特別な注意を払う必要があります。

2. インデックス配列と連想配列

PHP は 2 種類の配列をサポートしています。1 つは「値」(値) のみを格納するインデックス付き配列、もう 1 つは「名前と値のペア」(名前/値) を格納する連想配列です。

JavaScript は連想配列をサポートしていないため、json_encode() はインデックス付き配列のみを配列形式に変換し、連想配列をオブジェクト形式に変換します。

たとえば、インデックス配列があります

1 2 3 $arr = Array('one''two''three');echo json_encode($arr);

出力

1 ["one","two","three"]

連想配列に変更する場合:

1 2 3 $arr = Array('1'=>'one''2'=>'two''3'=>'three');   echo json_encode($arr);

出力は次のようになります

1 {"1":"one","2":"two","3":"three"}

データ形式が「[]」(配列)から「{}」(オブジェクト)に変更されていることに注意してください。

「インデックス配列」を「オブジェクト」に強制的に入れる必要がある場合は、次のように書くことができます

1 json_encode( (object)$arr );

または

1 json_encode ( $arr, JSON_FORCE_OBJECT );

3. クラス変換

以下は PHP クラスです:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 class Foo {  const     ERROR_CODE = '404';  public    $public_ex 'this is public';  private   $private_ex 'this is private!';  protected $protected_ex 'this should be protected';     public function getErrorCode() {    return self::ERROR_CODE;  }}

次に、このクラスのインスタンスで json 変換を実行します。

1 2 3 4 5 $foo new Foo;$foo_json = json_encode($foo);echo $foo_json;

出力結果は

1 {"public_ex":"これは公開されています"{"public_ex":"this is public"}

パブリック変数 (public) を除いて、他のもの (定数、プライベート変数、メソッドなど) が欠落していることがわかります。

4. json_decode()

この関数は、json テキストを対応する PHP データ構造に変換するために使用されます。以下に例を示します:

1 2 3 4 5 $json '{"foo": 12345}';   $obj = json_decode($json);print $obj->{'foo'}; // 12345

通常、json_decode() は配列ではなく常に PHP オブジェクトを返します。例:

1 2 3 $json '{"a":1,"b":2,"c":3,"d":4,"e":5}';   var_dump(json_decode($json));

結果として、PHP オブジェクトが生成されます:

1 2 3 4 5 6 7 8 9 10 object(stdClass)#1 (5) {  ["a"] => int(1)   ["b"] => int(2)   ["c"] => int(3)   ["d"] => int(4)   ["e"] => int(5)}

PHP 連想配列の生成を強制したい場合は、 json_decode() にパラメータ true を追加する必要があります:

1 2 3 $json '{"a":1,"b":2,"c":3,"d":4,"e":5}';     var_dump(json_decode($json,true));

結果は連想配列になります:

1 2 3 4 5 6 7 8 9 10 array(5) {    ["a"] => int(1)    ["b"] => int(2)    ["c"] => int(3)    ["d"] => int(4)    ["e"] => int(5)}

5. json_decode() の一般的なエラー

次の 3 つの json の記述方法はすべて間違っています。どこにエラーがあるかわかりますか?

1 2 3 4 5 $bad_json "{ 'bar': 'baz' }";$bad_json '{ bar: "baz" }';$bad_json '{ "bar": "baz", }';

これら 3 つの文字列に対して json_decode() を実行すると、null が返され、エラーが報告されます。

最初のエラーは、JSON 区切り文字 (区切り文字) では単一引用符ではなく二重引用符の使用のみが許可されていることです。 2 番目の間違いは、JSON の名前と値のペアの「名前」 (コロンの左側の部分) では、いかなる場合でも二重引用符を使用する必要があることです。 3 番目のエラーは、最後の値の後にカンマを追加できないことです。

さらに、json はオブジェクトと配列を表すためにのみ使用できます。json_decode() が文字列または値に対して使用された場合、null が返されます。

1 var_dump(json_decode("Hello World")); //null

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/941171.html技術記事 PHP 言語で JSON を使用し、json を配列に戻す前に、php から json 配列に json データを返す簡単な例を書きました。また、json も紹介されている記事を突然見つけました。
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
PHPセッションがすでに開始されているかどうかを確認するにはどうすればよいですか?PHPセッションがすでに開始されているかどうかを確認するにはどうすればよいですか?Apr 30, 2025 am 12:20 AM

PHPでは、session_status()またはsession_id()を使用して、セッションが開始されたかどうかを確認できます。 1)session_status()関数を使用します。 php_session_activeが返された場合、セッションが開始されました。 2)SESSION_ID()関数を使用します。空の文字列が返された場合、セッションが開始されます。どちらの方法でもセッション状態を効果的に確認でき、使用する方法を選択することは、PHPバージョンと個人的な好みに依存します。

Webアプリケーションでセッションを使用することが不可欠なシナリオを説明してください。Webアプリケーションでセッションを使用することが不可欠なシナリオを説明してください。Apr 30, 2025 am 12:16 AM

Sessionsionsionsarevitalinwebapplications、特にコマースプラットフォームの前。

PHPでの同時セッションアクセスをどのように管理できますか?PHPでの同時セッションアクセスをどのように管理できますか?Apr 30, 2025 am 12:11 AM

PHPでの同時セッションアクセスの管理は、次の方法で実行できます。1。データベースを使用してセッションデータを保存します。これらの方法は、データの一貫性を確保し、並行性のパフォーマンスを向上させるのに役立ちます。

PHPセッションを使用することの制限は何ですか?PHPセッションを使用することの制限は何ですか?Apr 30, 2025 am 12:04 AM

phpsessionshaveverallimitations:1)storagecconstraintscanleadtoperformanceissues; 2)securityvulnerablesliasitylikessessionfixationAttacksicexist;

負荷分散がセッション管理にどのように影響し、それに対処するかを説明します。負荷分散がセッション管理にどのように影響し、それに対処するかを説明します。Apr 29, 2025 am 12:42 AM

負荷分散はセッション管理に影響しますが、セッションの複製、セッションの粘着性、集中セッションストレージで解決できます。 1。セッションレプリケーションサーバー間のセッションデータをコピーします。 2。セッションスティンネスは、ユーザーリクエストを同じサーバーに指示します。 3.集中セッションストレージは、Redisなどの独立したサーバーを使用してセッションデータを保存してデータ共有を確保します。

セッションロックの概念を説明します。セッションロックの概念を説明します。Apr 29, 2025 am 12:39 AM

SESSIONLOCKINGISATECHNIQUESTOESUREAUSER'SSESSIONREMAINSEXCLUSIVETOONEUSATIME.ITISCRUCIALFORPREVENTINGDATACORTIONANDSECURITYBREACHESINMULTI-USERAPPLICATIONS.SESSIONLOCKINGISISIMPLEMENTEDUSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGSINGROCKINGSMECHANISMなど

PHPセッションの選択肢はありますか?PHPセッションの選択肢はありますか?Apr 29, 2025 am 12:36 AM

PHPセッションの代替品には、Cookie、トークンベースの認証、データベースベースのセッション、Redis/Memcachedが含まれます。 1.Cookiesは、クライアントにデータを保存することによりセッションを管理します。 2.トークンベースの認証はトークンを使用してユーザーを検証します。これは非常に安全ですが、追加のロジックが必要です。 3.Databaseベースのセッションは、データベースにデータを保存します。これは、スケーラビリティが良好ですが、パフォーマンスに影響を与える可能性があります。 4. Redis/Memcachedは分散キャッシュを使用してパフォーマンスとスケーラビリティを向上させますが、追加のマッチングが必要です

PHPのコンテキストで「セッションハイジャック」という用語を定義します。PHPのコンテキストで「セッションハイジャック」という用語を定義します。Apr 29, 2025 am 12:33 AM

SessionHijackingとは、ユーザーのSessionIDを取得してユーザーになりすましている攻撃者を指します。予防方法には、次のものが含まれます。1)HTTPSを使用した通信の暗号化。 2)SessionIDのソースの検証。 3)安全なSessionID生成アルゴリズムの使用。 4)SessionIDを定期的に更新します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。