LoginSignup
16
17

More than 3 years have passed since last update.

【PHP】JSONを取得してデータを表示する

Last updated at Posted at 2020-06-13

今回は、コロナウイルスのJSONのデータを取得して
データをブラウザに表示していこうと思う。

今回、使用するJSONは、以下の物になる。
「コロナウイルスの県ごとの感染数、死者数」
url↓
https://covid19-japan-web-api.now.sh/api/v1/prefectures

[
  {
    "id": 1,
    "name_ja": "北海道",
    "name_en": "Hokkaido",
    "lat": 43.46722222,
    "lng": 142.8277778,
    "cases": 176,
    "deaths": 7
  },
  {
    "id": 2,
    "name_ja": "青森",
    "name_en": "Aomori",
    "lat": 40.78027778,
    "lng": 140.83194440000003,
    "cases": 8,
    "deaths": 0
  },
...

このJSONデータを取得していこうと思う。
まず、JSONデータをデコードしていく。

<?php
$url="https://covid19-japan-web-api.now.sh/api/v1/prefectures";
$json=file_get_contents($url);
$arr=json_decode($json,true);

それぞれ解説していく。

$url="https://covid19-japan-web-api.now.sh/api/v1/prefectures";

変数$urlに先ほど掲載させてurlを入れ込む。

$json=file_get_contents($url);
$arr=json_decode($json,true);

次にfile_get_contents()関数に$urlを変数を入れる。
file_get_contents()は、ファイルなどを組み込む際に使う。
その後、json_decode()により
json形式のファイルから元の形式に変換する。

また、第二引数のtrueは、
falseにするとオブジェクトを返し、
trueにすると連想配列形式のオブジェクトを返します。

上記のコーディングによりjsonの取得が完了した。

次に取得したデータをブラウザ上に表示する。

foreach($arr as $data){
    $ja= "都道府県名 ".$data['name_ja']."\n"."<br>".PHP_EOL;
    $cases= "発生件数  ".$data['cases']."人\n"."<br>".PHP_EOL;
    $deaths= "死者数   ".$data['deaths']."人\n"."<br>".PHP_EOL;
    $pcr= "pcr件数  ".$data['pcr']."人\n"."<br>".PHP_EOL;
   $virusData= array(
      $ja,$cases,$deaths,$pcr,
   );

foreach文を使用して、$arrを$dataに入れ、
それぞれのjsonのデータを

 $ja= "都道府県名 ".$data['name_ja']."\n"."<br>".PHP_EOL;

のように都道府県名、jsonの要素名、改行のエスケープシーケンス、
HTMLの改行タグ、PHP改行コードを記載している。
そして、それらのデータを一つの$virusDataという変数に配列にて格納する。

最後に、

echo implode('',$virusData);}?>

配列の要素を結合して文字列にするimplode関数を使用することで以下のように表示される。

スクリーンショット 2020-06-13 17.02.32.png

全コードは、以下の通りである。

<?php
$url="https://covid19-japan-web-api.now.sh/api/v1/prefectures";
$json=file_get_contents($url);
//$json=mb_detect_encoding($json,'UTF-8','ASCII,JIS,UTF-8,EUC-JP,SJIS-WIN');
$arr=json_decode($json,true);
foreach($arr as $data){
    $ja= "都道府県名 ".$data['name_ja']."\n"."<br>".PHP_EOL;
    $cases= "発生件数  ".$data['cases']."人\n"."<br>".PHP_EOL;
    $deaths= "死者数   ".$data['deaths']."人\n"."<br>".PHP_EOL;
    $pcr= "pcr件数  ".$data['pcr']."人\n"."<br>".PHP_EOL;
   $virusData= array(
      $ja,$cases,$deaths,$pcr,
   );
echo implode('',$virusData);
}
?>

完成系としては、jsonから取得したデータをgoogle sheet apiを使用して
更新出来るようなプログラムを作成したい。

また、プログラミング初心者なので、コードのフィードバック頂けたら嬉しいです。
よろしくお願い致します。

16
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
17