2 json 和 PHP 有什么区别

What different between 2 json with PHP

我有这两个代码可以在 PHP 中从数组生成 json:

代码 1

$array_1 = array("A","B","C");
$array_2 = array("D","E","F");
echo json_encode(array('array_0'=> array('array_1'=>$array_1,'array_2'=>$array_2)));

输出:

{
    "array_0":
    {
        "array_1": ["A", "B", "C"],
        "array_2": ["D", "E", "F"]
    }
}

代码 2

$A = array('A','B','C');
$B = array('array_1' => $A);
$C = array('D','F','E');
$D = array('array_2' => $C);
$E = array($B, $D);
$F = array('array_0' => $E);
echo json_encode($F);

输出:

{
    "array_0": [
        {
            "array_1": ["A", "B", "C"]
        },
        {
            "array_2": ["D", "F", "E"]
        }
    ]
}

为什么2个输出有区别?哪一个是正确的?

谢谢!

在第一种情况下,array_0是一个转换为js对象的关联数组。

在第二种情况下,array_0是一个转换为js数组的数值数组。

没有correct/wrong。他们都是正确的。

code_2 中,您将 array_0 创建为:

array(array('array_1' => $A), array('array_2' => $C));
// ^$E   ^$B                   ^$D

而您 code_1 中的类似步骤是:

array('array_1' => $A, 'array_2' => $C)

您可以通过在 code_2 中定义 $E 来使它们相似,如下所示:

$E = array_merge($B, $D)