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


今回は、コロナウイルスの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関数を使用することで以下のように表示される。

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

<?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を使用して
更新出来るようなプログラムを作成したい。

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