来自Php和数据库的嵌套JSON文件

时间:2015-09-13 16:51:52

标签: php mysql arrays json

我正在从数据库中获取JSON文件,该数据库有两个表 semone ,其中包含属性 id,semester,cname 和表课程属性 coname and credit

我在php中编写的代码正在关注。

main.php

<?php
    $user = "root";
    $password = "";
    $database = "scheduler";

    $con = mysqli_connect("localhost", $user, $password, $database) or die ("Unable to connect"); 
    $query = "SELECT semone.userid AS id,  semone.semester AS semester, semone.cname AS name, courses.credit AS value
    FROM semone
    INNER JOIN courses
    ON semone.cname = courses.coname" ;

    $result = mysqli_query($con,$query)or die ("Unable to connect");

    $info = array();
    $test = array();

    while ($row = $result->fetch_array(MYSQLI_ASSOC)) {

          $row['xyz'] = array(
          'name'=> $row['name'],
          'value'=> $row['value']    
          );

    $info[$row['id']]['children'][$row['semester']]['children'][]= $row['xyz'];

    }
    $data = json_encode(($info));
    echo $data;
?>

我想获取JSON文件,如下面的代码所示,但我得到的是这样的东西。

output.json

{
    "12345": {
        "children": {
            "first": {
                "children": [{
                    "name": "C101",
                        "value": 100

                },

                {
                    "name": "C102",
                        "value": 100

                }]
            },

                "second": {
                "children": [{
                    "name": "C103",
                        "value": 50

                }, {
                    "name": "C104",
                        "value": 100

                }, {
                    "name": "C105",
                        "value": 100

                }]
            },

                "third": {
                "children": [{
                    "name": "C106",
                        "value": 50

                }]
            }
        }
    }
}

但这正是我所期待的。

expected.json

{
 "id": 12345,
     "children": [{
     "semester": "first",
         "children": [{
         "name": "C101",
             "value": 100

     },

     {
         "name": "C102",
             "value": 100

     }]
 }, {
     "semester": "second",
         "children": [{
         "name": "C103",
             "value": 50

     }, {
         "name": "C104",
             "value": 100

     }, {
         "name": "C105",
             "value": 100

     }]
 }, {
     "semester": "third",
         "children": [{
         "name": "C106",
             "value": 50

     }]
 }
}

0 个答案:

没有答案