はじめに
jsonをphpで読み込んで表示する機会があったのでここに書き留めておきます。
概要
- jsonファイルを用意
- phpで読み込み
- 出力
手順
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ファイルへのパス -
$json
:file_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ファイルのデータ容量がそれほど多くなく、言ってしまえばphpに連想配列を直書きできる内容でした。
もしそのような場合はjsonを使う必要はないと思います。
ただ、データ数や項目数が多い場合は、データを格納する専用のファイルとしてjsonを使うのをお勧めします。
(データベースの知識があれば、MySQL等を使ったほうが良いと聞くのですが、私はまだそのスキルが十分ではないのでjsonを使っています)