Javascript 解码json时保留关联数组

Javascript 解码json时保留关联数组,javascript,php,arrays,json,Javascript,Php,Arrays,Json,例如,我有以下数组:- $menu = array( "result"=>array( "food"=>array( "Nasi Padang", "Kentang Goreng", "Potato Wedges" ), "drink"=>array( "Bajigur", "AO",

例如,我有以下数组:-

$menu = array(
    "result"=>array(
        "food"=>array(
            "Nasi Padang",
            "Kentang Goreng",
            "Potato Wedges"
        ),
        "drink"=>array(
            "Bajigur",
            "AO",
            "Sabun"
        )
    )
);
使用
json\u encode
将上述代码变为:-

{
    "result":{
        "food":[
            "Nasi Padang",
            "Kentang Goreng",
            "Potato Wedges"
        ],
        "drink":[
            "Bajigur",
            "AO",
            "Sabun"
        ]
    }
}
正如您所看到的,
result
array变成了一个对象,而不是以数组的形式存在,这可能是因为JavaScript没有现成的关联数组

那么,在执行
json_decode
之后,是否仍然可以将
结果作为数组处理,而不使用任何类似
(数组)

编辑: 响应ANNT回复/注释,我在本地主机中尝试了以下代码

$test = new stdClass;
$test->count = 1337;
$test->page = 2;

$menu = array(
    "test"=>$test,
    "result"=>array(
        "food"=>array(
            "Nasi Padang",
            "Kentang Goreng",
            "Potato Wedges"
        ),
        "drink"=>array(
            "Bajigur",
            "AO",
            "Sabun"
        )
    )
);

$json = json_encode($menu);
echo print_r(json_decode($json, true));
结果

Array
(
    [test] => Array
        (
            [count] => 1337
            [page] => 2
        )

    [result] => Array
        (
            [food] => Array
                (
                    [0] => Nasi Padang
                    [1] => Kentang Goreng
                    [2] => Potato Wedges
                )

            [drink] => Array
                (
                    [0] => Bajigur
                    [1] => AO
                    [2] => Sabun
                )

        )

)
正如您所看到的,结果数组变成了一个对象,而不是以数组的形式存在,这可能是因为JavaScript没有现成的关联数组

这是因为在JSON中,普通对象的用途与PHP中的关联数组相同。唯一的区别是它不是有序的

JSON没有一个数据结构,它的命名属性也是有序的。要实现这一点,您需要使用对象数组,例如:

[
    { "name" : "foo", "value" : 1 },
    { "name" : "bar", "value" : 2 }
]
那么,在执行json_解码后,是否有任何方法可以将结果作为数组处理,而不使用任何类似(数组)的强制转换

发件人:

assoc:如果为TRUE,则返回的对象将转换为关联数组


因此,将
json_decode
的第二个参数设置为
true

json必须始终包装在
{}
中,您不能有一个作为列表的json对象。您可以直接在JSON内部有一个列表,但是外部必须是
{}
@Anant:I明白了..但是如果数组中也有真实对象(
stdClass
),该怎么办?对象是否也会转换为关联数组?@DarielPratama函数(带true参数)会将其完全转换,而不是一半。所以,如果您在生成的数组中同时需要这两种代码,那么就手工编写一些代码