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

标签 php mysql arrays json

我正在从数据库中获取 JSON 文件,它有两个表 semone 和属性 id, semester, cname 和表 courses具有属性 coname 和 credit

我用 php 编写的代码如下。

ma​​in.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 文件,如以下代码所示,但我得到的是这样的东西。

输出.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

     }]
 }
}

最佳答案

您可能应该以不同的方式构建数组:

$info[] = array(
    array('id' => $row['id']),
    'children' => array(
        'semester' => $row['semester'],
        'children' => $row['xyz']
    )
);

关于php - 来自 Php 和数据库的嵌套 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32552131/

相关文章:

php - Paypal Checkout Express 不显示订单详细信息

php - 插入php和pgsql后如何获取返回id

php - Laravel 嵌套急切加载

javascript - 使用ajax添加和删除评论?

javascript - 如何将字符串转换为 TYPES.LPTSTR.targetType.array

sql - 检查数组是否包含在 PostgreSQL 中的另一个数组中

php - PHP 和 MySQL 之间的时区差异

java - 从 ResultSet Java 获取主键列

c# - Entity Framework 插入未反射(reflect)在数据库中

python - 来自 YAML 的 Numpy 数组