我试图从mysql查询建立一个JSON对象。我想要的JSON结构应该是这样的:
{
"a": [
{
"user": "alb",
"time": "2011-09-12 05:56:36"
},
{
"user": "arg",
"time": "2011-09-12 05:56:36"
}
]
"b": [
{
"user": "blah",
"time": "2011-09-12 05:56:36"
},
{
"user": "bleh",
"time": "2011-09-12 05:56:36"
}
]
}
然而,我的代码总是返回一个JSON对象包装在一个数组中,像这样:
[
{
"a": [
{
"user": "alb",
"time": "2011-09-12 05:56:36"
},
{
"user": "arg",
"time": "2011-09-12 05:56:36"
}
]
"b": [
{
"user": "blah",
"time": "2011-09-12 05:56:36"
},
{
"user": "bleh",
"time": "2011-09-12 05:56:36"
}
]
}
]
下面是我使用的php代码:
<?php
$json_data = array();
foreach($blogs as $blog)
{
$sql = "SELECT * from users";
$query = mysql_query($sql);
$ablog = array();
while ($row = mysql_fetch_assoc($query))
{
$json_element = array(
"user"=> $row[username] ,
"time"=> $row[time]
);
array_push($ablog,$json_element);
}
$eblog = array($blog => $ablog);
array_push($json_data,$eblog);
}
$json_output = json_encode($json_data);
print $json_output;
?>
我想知道:为什么我得到一个JSON对象包装在一个数组?我在上面的代码中做错了什么?
谢谢。
下面两行创建单元素关联数组,并将单元素数组追加到更大的$json_data
数组:
$eblog = array($blog => $ablog);
array_push($json_data,$eblog);
相反,只需在原始数组中添加一个新的键/值对:
$json_data[$blog] = $ablog;