Quantcast
Channel: 連想配列タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 129

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

$
0
0

はじめに

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を使っています)


Viewing all articles
Browse latest Browse all 129

Trending Articles