3

ここで何が起こっているのか説明してくれませんか。

$data[0] = array("one" => "uno", "two" => "dos", "three" => "tres");
$data[1] = array("one" => "uno", "two" => "dos", "three" => "tres");

//unset($data[0]);

$encode = json_encode($data);

$decode = json_decode($encode);

var_dump($decode);

出力:

array(2) { [0]=> object(stdClass)#1 (3) { ["one"]=> string(3) "uno" ["two"]=> string(3) "dos" ["three"]=> string(4) "tres" } [1]=> object(stdClass)#2 (3) { ["one"]=> string(3) "uno" ["two"]=> string(3) "dos" ["three"]=> string(4) "tres" } }

これは通常、配列として保持されますが、配列の一部を設定解除するとすぐに、それが obj に変わります。

$data[0] = array("one" => "uno", "two" => "dos", "three" => "tres");
$data[1] = array("one" => "uno", "two" => "dos", "three" => "tres");

unset($data[0]);

$encode = json_encode($data);

$decode = json_decode($encode);

var_dump($decode);

出力:

object(stdClass)#1 (1) { ["1"]=> object(stdClass)#2 (3) { ["one"]=> string(3) "uno" ["two"]=> string(3) "dos" ["three"]=> string(4) "tres" } }

一貫性を保つにはどうすればよいですか?

4

3 に答える 3

1

オプションでjson_encodeを調べます。JSON_FORCE_OBJECT恒常性を強制するべきだと思います。

于 2013-08-20T20:00:42.297 に答える
0

Javascript は配列とオブジェクトを区別します。PHP には、両方のタイプを一度にカバーするための配列しかありません。

連続して数値的に 0 から始まる PHP 配列は Javascript 配列にエンコードされ、それ以外はすべてオブジェクトにエンコードされます。

于 2013-08-20T20:03:41.927 に答える