データの取得と出力を学ぶ!PHPでJSONを使う方法【初心者向け】
プログラミング初心者向けにPHPでJSONを扱う方法について解説しています。JSONデータの出力、JSONデータの取得、読み込みなど実際の開発現場でも役立つ知識になります。APIを使った作業などに便利でしょう。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
PHPでJSONを使う方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
APIを使った開発作業などによく使われることがありますが、データを扱う上で便利な書き方なので、ぜひ覚えておきましょう。
配列などをJSON形式に変換する書き方、JSON形式のデータを変数や配列に変換する書き方の両方を説明しています。
目次
そもそもPHPについてよく分からないという方は、PHPとは何なのか解説した記事を読むとさらに理解が深まります。
そもそもJSONとは
JSONとは一体どういうものでしょうか。
JSONとは「JavaScript Object Notation 」の略で、JavaScriptのオブジェクトの記法として開発されました。
その後、様々なプログラミング言語でデータの受け渡しをするための記法として使われるようになりました。
人間が本を読む時は文章の形であれば読むことができますし、家計簿や予算などのデータを見るときであれば表やグラフの形式であれば読みやすいでしょう。
逆に、グラフデータを文章にするとわかりづらくなることもあるはずです。
プログラミング言語でも同様に、データを理解しやすい形式というものがあります。
その中の1つがJSONです。
簡単な例として、下記がJSON形式です。
{"a":"Taro","b":"John","c":"Nikita","d":"Jiro","e":"Saburo"}
上の”a”の項目には”Taro”という文字が入っています。
ジェイソンって何か怖いですね。
JSONのほうは、簡単に言うとJavaScriptの連想配列なんだ。
これは、どこかのサイトからデータを取得してくる感じですか?
そうだね。JSON形式でデータが公開されているところが多いんだよ。PHPで使えるように戻したり、JavaScriptの連想配列に戻したりできるんだよ。
JSONデータの取得方法
PHPは主にサーバサイドで使用されるプログラミング言語です。
PHPで構築したサーバから別のサーバに接続して何らかのデータを取得する際に、JSON形式のデータが使用されることがあります。
例えば、example.comに配置されているJSON形式のデータを取得する場合は、以下のようなイメージです。
<?php $url = "http://example.com/sample.json"; $json = file_get_contents($url); ?>
http://example.com/sample.jsonからJSON形式のデータを取得し、$jsonに設定しています。
※上記は例ですので、http://example.com/sample.jsonからJSON形式のデータは実際には取得できません。
[PR] PHPを学んで未経験からWebエンジニアを目指す方法とは
JSONデータの作成方法
PHPではJSONデータを配列として扱えます。
あくまで配列であり、まだJSON形式ではないことに注意してください。
<?php $ary = array('a'=>"Taro", 'b'=>"John", 'c'=>"Nikita", 'd'=>"Jiro", 'e'=>"Saburo" ); ?>
json_encode関数の書き方
json_encode関数とは、文字列や配列などの変数をJSON形式に変換してくれる関数です。
書き方は、以下のように書きます。
$json = json_encode($value);
$valueの部分に文字列や配列を入れます。
json_decode関数の書き方
json_decode関数は、JSON形式の変数を配列やオブジェクト型に変換してくれる関数です。
書き方は、以下のように書きます。
$decoded_json = json_decode($json);
$jsonの部分にJSON形式の変数を入れます。
実際に書いてみよう
それでは実際に書いてみましょう。
まずjson_encode関数を使って、配列をJSON形式に変換してみます。
encode_json.php -------------------------------------------------- <?php // 配列を用意します。 $ary = array('a'=>"Taro", 'b'=>"John", 'c'=>"Nikita", 'd'=>"Jiro", 'e'=>"Saburo" ); // 配列をjson_encode関数でJSON形式に変換します。 $json = json_encode($ary); // 変換したJSON形式である$jsonを表示します。 print($json); ?> --------------------------------------------------
以下、実行結果です。
実行結果 -------------------------------------------------- {"a":"Taro","b":"John","c":"Nikita","d":"Jiro","e":"Saburo"} --------------------------------------------------
配列がJSON形式になっていることがわかります。
次に、json_decode関数を使って、JSON形式をオブジェクトに変換します。
decode_json.php -------------------------------------------------- <?php // 配列を用意します。 $ary = array('a'=>"Taro", 'b'=>"John", 'c'=>"Nikita", 'd'=>"Jiro", 'e'=>"Saburo" ); // 配列をjson_encode関数でJSON形式に変換します。 $json = json_encode($ary); // JSON形式に変換されている$jsonをオブジェクト型に変換します。 $decoded_json = json_decode($json); // オブジェクト型に変換した$decoded_jsonの中身をvar_dump関数で表示します。 print(var_dump($decoded_json)); // $decoded_jsonからデータを取り出して表示します。 print($decoded_json->{"c"}); ?> --------------------------------------------------
以下、実行結果です。
-------------------------------------------------- object(stdClass)#1 (5) { ["a"]=> string(4) "Taro" ["b"]=> string(4) "John" ["c"]=> string(6) "Nikita" ["d"]=> string(4) "Jiro" ["e"]=> string(6) "Saburo" } Nikita --------------------------------------------------
JSON形式がオブジェクト型に変換され、またNikitaというデータを取り出せていることがわかります。
まとめ
JSONは、よくAPIなどを使ってデータをやり取りする際に使われます。
プログラミングでデータをやり取りするためにはほぼ必須の知識ですので、json_encode関数やjson_decode関数を活用できるようになりましょう。
上の例では、PHPの連想配列の形が、jsonエンコードで、JavaScriptの連想配列になって、デコードで元に戻ってますね。
簡単にまとめると、JavaScriptの変数や配列や連想配列などのデータは、PHP側で使うことができたりするんだ。
違うプログラミング言語なのに、変数が使えるんですね。
そうそう。使いどころは簡単じゃないけど、JavaScriptの連想配列や変数、配列もPHPで使うことができるんだよ。
PHPを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのPHP/Laravelコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、PHP/Laravelを使ったWebアプリケーション開発を学べます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!