我从像这样的数据库中获取数据
$endResult = array();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
if (!isset($endResult[$row['car']])) {
$endResult[$row['car']]= (object) array(
'car' => $row['car'],
'carModel' => $row['carModel'],
'colors' => array()
);
}
$endResult[$row['car']] -> colors [] = (object) array(
'paintedOn' => $row['paintenOnDate'],
'paintedBy' => $row['paintedBy']
);
}
//return with slim.php
$response->body(json_encode($endResult));
结果我得到了
{"1":
{
"car": "1",
"carModel": "model-1",
"colors": [
{
"paintedOn": "2014-11-07",
"paintedBy": "5"
},{
"paintedOn": "2014-11-08",
"paintedBy": "6"
}]
},
"2":{
"car": "2",
"carModel": "model-2",
"colors": [
{
"paintedOn": "2014-11-09",
"paintedBy": "7"
},{
"paintedOn": "2014-11-10",
"paintedBy": "8"
}]
}
}//<--replace this with []
即使$endResult
被声明为数组我得到{}括号,我怎么能用“数组”括号替换“对象”括号?
更新:我无法移除json_encode
作为前端(骨干)期待收藏
更新2:$endResult = array();
返回[...]
但是$endResult[$row['car']]= (object) array(...)
将其转换为{...}
答案 0 :(得分:2)
你无法达到你想要的效果,因为它会导致无效的JSON。根据{{3}}:
数组是有序的值集合。数组以[(左括号)开头,以]结尾(右括号)。值以(逗号)分隔。
因此,您只能在数组中包含值。因为要为值添加名称,所以它必须成为对象。
如果您真的希望将JSON包装在数组中,则需要删除第一级名称,在您的示例中&#34; 1&#34;和&#34; 2&#34;:
[
{
"car": "1",
"carModel": "model-1",
"colors": [
{
"paintedOn": "2014-11-07",
"paintedBy": "5"
},
{
"paintedOn": "2014-11-08",
"paintedBy": "6"
}
]
},
{
"car": "2",
"carModel": "model-2",
"colors": [
{
"paintedOn": "2014-11-09",
"paintedBy": "7"
},
{
"paintedOn": "2014-11-10",
"paintedBy": "8"
}
]
}
]
答案 1 :(得分:0)
删除转换为JSON。还&#34;声明&#34;在PHP中并不重要。您仍然可以在程序过程中指定不同的类型。
答案 2 :(得分:0)
我认为PHP函数json_decode应该在这里帮助你。这会将JSON格式转换为数组。
答案 3 :(得分:0)
use json_decode($data,true) for convert returned data in to array.