使用子数组返回JSON数组

时间:2012-08-08 09:41:25

标签: php mysql arrays json

我的表格如下:

id | title | link | kind
------------------------
 1   link1   http   one
 4   link2   http   two
 2   link9   http   one

我想回馈一个JSON数组(JSON解析不是问题!),它看起来像:

one
 - link1, http
 - link9, http
two
 - link2, http

kind-colum是动态所以我不知道实际的字符串。 (但它永远不会(null)!)

我有什么:

$links = array();
while($row = mysql_fetch_object($result)) {
    $link = array(
        'title' => $row->title,
        'link' => $row->link,
        'kind' => $row->kind
    );
    $links[] = $link;
}

echo json_encode($links);

这是一个包含每个元素的所有列的数组。

2 个答案:

答案 0 :(得分:0)

使用$ row-> kind作为顶级数组的索引。

$kinds = array('one' => 1, 'two' => 2, ...etc...);
$links = array();
while($row = mysql_fetch_object($result)) {
    $link = array(
        'title' => $row->title,
        'link' => $row->link
    );
    $links[$kinds[$row->kind]][] = $link;
}

echo json_encode($links);

答案 1 :(得分:0)

您可以在MySQL查询中执行此操作:

SELECT CONCAT("[",
          GROUP_CONCAT(
               CONCAT("{".kind.":'",title ,"'"),
               CONCAT(",".kind.":'",link),"'}")
          )
     ,"]") AS json
FROM table_name;