7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

phpを使ったjsonファイルの出力

Posted at

はじめに

jsonをphpで読み込んで表示する機会があったのでここに書き留めておきます。

概要

  1. jsonファイルを用意
  2. phpで読み込み
  3. 出力

手順

jsonファイル作成

まず、出力するjsonファイルを用意します。
今回はdata.jsonを作成します。

[
    {
        "name": "Aさん",
        "department": "営業",
        "text": [
            "今月の売り上げは先月の2倍の見込みです",
            "先月の遅れを取り戻します"
        ]
    },
    {
        "name": "B",
        "department": "人事",
        "text": [
            "就活生とお話する機会があって楽しいです"
        ]
    },
    {
        "name": "C",
        "department": "経理",
        "text": [
            "1桁のミスも許されない世界です"
        ]
    }
]

phpで読み込み

<?php
$file = "./data.json";
$json = file_get_contents($file);
$data = json_decode($json, true);
?>
  • $file:jsonファイルへのパス
  • $jsonfile_get_contents関数を用いて、$fileの内容を文字列として読み込む
  • $data$jsonの内容を連想配列として$dataに格納する

$dataにどのような感じでjsonデータが格納されているか挙げると、

$data[0]["name"] => "A"
$data[0]["department"] => "営業"
$data[0]["text"][0] => "今月の売り上げは先月の2倍の見込みです"
$data[0]["text"][1] => "先月の遅れを取り戻します"
$data[1]["name"] => "B"
$data[1]["department"] => "人事"
・・・

このように、phpの連想配列として$dataに格納されています。
echo var_dump($data)
と打つと、連想配列の様子が確認できます。

出力

最後に、htmlとして出力をします。
ここまでくれば、あとは連想配列の出力と同じです。

<?php
for($i=0; $i<count($data); $i++){
    print<<<EOT
    <div style="margin: 10px; padding: 5px; border: solid 1px #000000;">
        <p>名前:{$data[$i]["name"]}</p>
        <p>所属:{$data[$i]["department"]}</p>
        <p>
EOT;
        for($k=0; $k<count($data[$i]["text"]); $k++){
            print<<<EOT
            {$data[$i]["text"][$k]}<br>
EOT;
        }
        print<<<EOT
        </p>
    </div>
    
EOT;
}
?>

textのところ(2回目のfor文)で、そこが配列になっているのでやや複雑になっています。
結果をブラウザで見ると、

json.png

と、出力されているのが確かめられました!

最後に

今回の場合はjsonファイルのデータ容量がそれほど多くなく、言ってしまえばphpに連想配列を直書きできる内容でした。
もしそのような場合はjsonを使う必要はないと思います。
ただ、データ数や項目数が多い場合は、データを格納する専用のファイルとしてjsonを使うのをお勧めします。
(データベースの知識があれば、MySQL等を使ったほうが良いと聞くのですが、私はまだそのスキルが十分ではないのでjsonを使っています)

7
2
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
7
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?