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

json_encodeに関するテスト

Last updated at Posted at 2017-02-17

json_encodeに関するテスト

phpの json_encode 関数の返り値について気になったので、メモ。

目次

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形式で表現すると,データたちは必ず[]で囲まれる
2
2
2

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