如何在PHP中正确格式化此json对象

时间:2009-03-12 23:23:38

标签: php javascript json

我需要能够在PHP中创建一个数据结构,例如,一个汽车供应商阵列。每个数组元素都包含一个子数组,该数组包含该供应商的汽车类型。

所以你有类似

的东西
$cars['toyota'] = array("camry", "etc");

我需要能够在PHP中创建这个数据结构,以便在JavaScript方面我可以做类似的事情

alert(cars.vendor[0].type[1])

如何在PHP端编码该数据结构?

7 个答案:

答案 0 :(得分:1)

如果你有PHP> 5.2.0,请尝试json_encode($cars)

这将在数组中创建一个数组,但它不会为您提供javascript示例中的内容:

$vendors = array(
  'toyota' => array('camry', 'etc.'),
  'honda' => array('civic', 'fit', 'etc.'),
);

您可能不需要vendors[0].types[1]的所有嵌入级别来整理您的信息。

答案 1 :(得分:1)

这是如何设置它以你想要的方式:

<script>
    var test = <?php
        print json_encode(array('vendor' => array(
            'toyota' => array('type' => array('camry','siena')),
            'mitsubishi' => array('type' => array('mirage','galant'))
        )));
    ?>;
    alert(test.vendor['toyota'].type[1]); // siena
    alert(test.vendor['mitsubishi'].type[0]); // mirage
</script>

我建议跳过供应商并完全输入部分内容,除非您在该对象中持有其他内容,并执行以下操作:

<script>
    var vendors = <?php
        print json_encode(array(
            'toyota' => array('camry','siena'),
            'mitsubishi' => array('mirage','galant')
        ));
    ?>;
    alert(vendors['toyota'][1]); // siena
    alert(vendors['mitsubishi'][0]); // mirage
</script>

答案 2 :(得分:1)

$data = array();
$data['userDetails'] =array( array("username"=>$username,"password"=>$password));
$data["wsfunction"]="user_authentication";

然后输出json编码函数如下

{"userDetails":[{"username":"Username","password":"Password"}],"wsfunction":"user_authentication"}

答案 3 :(得分:0)

嘿,关联数组和对象在Javascript中同等对待。因此,PHP结构

$cars['toyota'] = array("camry", "etc");

在JSON中等同于此:

var cars = { "toyota": [ "camry", "etc" ] };

您可以使用json_encode函数轻松地将PHP结构转换为JSON。 有关JSON格式的详细信息,请参阅json.org

答案 4 :(得分:0)

$cars = array();
$cars['toyota'] = array("camry", "etc");
$json = json_encode($cars);

将为您提供

的javascript结构
var cars = {
    toyota: [ 'camry', 'etc' ]
};

如果你想要

var cars = {
    vendor: [ { type: [ 'camry', 'etc' ] } ]
}

这将允许您调用alert(cars.vendor[0].type[1]) PHP数组应该看起来像

$cars = array(
    'vendor' => array(
        array('type' => array("camry", "etc"))
    )
);
$json = json_encode($cars);

但正如已经指出above,您应该跳过vendor - 部分并使用apprpriate供应商名称作为密钥。

答案 5 :(得分:0)

我将如何做到这一点:

class EmptyObject {}
$cars = new EmptyObject();
$cars->vendor[] = array('type' => array('camry','sienna'));
$cars->vendor[] = array('type' => array('mirage','galant'));
$json = json_encode($cars);
print $json;
// this produces:
// {"vendor":[{"type":["camry","sienna"]},{"type":["mirage","galant"]}]}

答案 6 :(得分:0)

好吧,如果您使用的是PHP 5,则可以使用函数json_encode,因为许多人已经回答过。

如果没有,如果您使用的是PHP 4,则需要something extra like this