我需要能够在PHP中创建一个数据结构,例如,一个汽车供应商阵列。每个数组元素都包含一个子数组,该数组包含该供应商的汽车类型。
所以你有类似
的东西$cars['toyota'] = array("camry", "etc");
我需要能够在PHP中创建这个数据结构,以便在JavaScript方面我可以做类似的事情
alert(cars.vendor[0].type[1])
如何在PHP端编码该数据结构?
答案 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。