json_encodeに関するテスト
phpの json_encode
関数の返り値について気になったので、メモ。
目次
json_encode
とは- 空行列を引数に与えたとき
- 引数に
array_push
関数を用いたとき
json_encode
とは
データをJSON形式に変換してくれる,PHPにデフォルトで入ってる関数(公式リファレンスはこちら)
JSON(JavaScript Object Notation)形式とは
データを表現する手段の1つ対応している言語は多く,あちこちでデータを使い回すのに便利だとか
[] ← 添字配列(0以上の整数で値を呼ぶ)を表す
{} ← 連想配列(自分がつけた名前で値を呼ぶ)を表す
## 空行列を引数に与えたとき
sample1.php
print_r(json_encode(array()));
実行結果
[]
array_push
内で配列を与えたとき
1次元配列
sample2.php
echo "array_push: a<br>";
$a = array(); // 初期化
// 配列aの最後に、3つの値を追加
array_push(
$a,
array(
'image' => 'aaa',
'title' => 'bbb',
'comment' => 'ccc',
)
);
var_dump($a); // 配列aについての情報を詳しく表示
echo "<br><br>aをjson形式化<br>";
print_r(json_encode($a)); // 配列aをJSON形式に変換した結果を(var_dumpより簡単に)表示
実行結果
array_push: a
array(1) {
[0]=> array(3) {
["image"]=> string(3) "aaa"
["title"]=> string(3) "bbb"
["comment"]=> string(3) "ccc"
}
}
aをjson形式化
[{"image":"aaa","title":"bbb","comment":"ccc"}]
2次元配列
sample2.phpを実行した後で,sample3.phpを実行sample3.php
echo "array_push: a(2回目)<br>";
array_push(
$a,
array(
'image' => 'ddd',
'title' => null,
'comment' => '',
)
);
var_dump($a);
echo "<br><br>aをjson形式化(2回目)<br>";
print_r(json_encode($a));
実行結果
array_push: a(2回目)
array(2) {
[0]=> array(3) {
["image"]=> string(3) "aaa"
["title"]=> string(3) "bbb"
["comment"]=> string(3) "ccc"
}
[1]=> array(3) {
["image"]=> string(3) "ddd"
["title"]=> NULL
["comment"]=> string(0) ""
}
}
aをjson形式化(2回目)
[{"image":"aaa","title":"bbb","comment":"ccc"},{"image":"ddd","title":null,"comment":""}]
添字配列
C言語とかで使われてる一般的な配列 「0番目(一番最初)の値は何?」という聞き方をするやつecho "array_push: z<br>";
$z = array();
array_push(
$z,
'aaa',
'bbb',
'ccc'
);
var_dump($z);
echo "<br><br>zをjsonに<br>";
print_r(json_encode($z));
実行結果
array_push: z
array(3) {
[0]=> string(3) "aaa"
[1]=> string(3) "bbb"
[2]=> string(3) "ccc"
}
zをjsonに
["aaa","bbb","ccc"]
まとめ
- nullと空文字は区別される
- 配列の入れ子になっている時,末尾に必ず「,」がつくわけではない
- 2つ目の要素を追加した時,その先頭に「,」が出現する
- []は添字配列,{}は連想配列を表す
JSON形式で表現すると,データたちは必ず[]で囲まれる