データの取得と出力を学ぶ!PHPでJSONを使う方法【初心者向け】

プログラミング初心者向けにPHPでJSONを扱う方法について解説しています。JSONデータの出力、JSONデータの取得、読み込みなど実際の開発現場でも役立つ知識になります。APIを使った作業などに便利でしょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

PHPでJSONの書き方を解説しています。

APIを使った開発作業などによく使われることがありますが、データを扱う上で便利な書き方なので、ぜひ覚えておきましょう。

配列などをJSON形式に変換する書き方、JSON形式のデータを変数や配列に変換する書き方の両方を説明しています。

 

なお本記事は、TechAcademyのPHPオンライン講座の内容をもとにしています。

 

そもそもJSONとは

JSONとは一体どういったものだったでしょうか。JSONとは「JavaScript Object Notation 」の略で、JavaScriptのオブジェクトの記法として開発されました。

その後、様々なプログラミング言語でデータの受け渡しをするための記法として使われるようになりました。人間が本を読む時は文章の形であれば読むことができますし、家計簿や予算などのデータを見るときであれば表やグラフの形式であれば読みやすいでしょう。逆に、グラフデータを文章にすると理解りづらくなることもあるはずです。

プログラミング言語でも同様に、データを理解しやすい形式というものがあります。その中の一つがJSONです。

簡単な例として、

{"a":"Taro","b":"John","c":"Nikita","d":"Jiro","e":"Saburo"}

がJSON形式です。上の”a”の項目には”Taro”という文字が入っています。

 

大石ゆかり

ジェイソンって何か怖いですね。

田島悠介

JSONのほうは、簡単に言うとJavaScriptの連想配列なんだ。

大石ゆかり

これは、どこかのサイトからデータを取得してくる感じですか?

田島悠介

そうだね。JSON形式でデータが公開されているところが多いんだよ。PHPで使えるように戻したり、JavaScriptの連想配列に戻したり出来るんだよ。

 

json_encode関数の書き方

json_encode関数とは、文字列や配列などの変数をJSON形式に変換してくれる関数です。書き方は、

$json = json_encode($value);

のように書きます。$valueの部分に文字列や配列を入れます。

 

[PR] PHPのプログラミングで挫折しない学習方法を動画で公開中

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を勉強していて、

  • もっと効率的に勉強したい
  • 誰かに聞きながら学びたい
  • 自分でWebサービスを作りたい

と思ったことはないでしょうか。

 

そんな方のために、TechAcademyではオンラインブートキャンプPHP/Laravelコースを提供しています。

現役エンジニアがパーソナルメンターとして受講生に1人ずつつき、マンツーマンのメンタリングで学習をサポートし、最短4週間でオリジナルWebサービスを開発することが可能です。

独学に限界を感じている場合はご検討ください。