php - 在 php 中使用 mysql 数据创建嵌套动态 json?

标签 php mysql json

我想以 json 格式显示年和月。下面是我获取数据的 json,但它看起来不是我想要的,请帮助我获得正确的 json。

<?php
    include 'conn.php';
      $year=  array();
      $sql = mysqli_query($conn,'SELECT SALARY_SLIP_ID,ORG_ID,EMPLOYEE_ID,PAY_MONTH,PAY_YEAR FROM india_salary_slip_details where EMPLOYEE_ID = 31');
      while ($row = mysqli_fetch_array($sql ,MYSQLI_ASSOC)) 
      {
          $year[] = array(                 

              'PAY_YEAR' => $row['PAY_YEAR'],
              'PAY_MONTH' => $row['PAY_MONTH'],       

          );

      }       
      echo json_encode($year);

    ?>

我得到的 json 数据是:

[
  {
    "PAY_YEAR": "2014",
    "PAY_MONTH": "February"
  },
  {
    "PAY_YEAR": "2014",
    "PAY_MONTH": "April"
  },
  {
    "PAY_YEAR": "2014",
    "PAY_MONTH": "May"
  },
  {
    "PAY_YEAR": "2014",
    "PAY_MONTH": "June"
  },
  {
    "PAY_YEAR": "2014",
    "PAY_MONTH": "July"
  },
  {
    "PAY_YEAR": "2014",
    "PAY_MONTH": "November"
  },
  {
    "PAY_YEAR": "2014",
    "PAY_MONTH": "December"
  },
  {
    "PAY_YEAR": "2015",
    "PAY_MONTH": "January"
  },
  {
    "PAY_YEAR": "2015",
    "PAY_MONTH": "February"
  },
  {
    "PAY_YEAR": "2015",
    "PAY_MONTH": "March"
  },
  {
    "PAY_YEAR": "2015",
    "PAY_MONTH": "April"
  },
  {
    "PAY_YEAR": "2015",
    "PAY_MONTH": "May"
  },
  {
    "PAY_YEAR": "2015",
    "PAY_MONTH": "June"
  },
  {
    "PAY_YEAR": "2015",
    "PAY_MONTH": "July"
  },
  {
    "PAY_YEAR": "2015",
    "PAY_MONTH": "August"
  },
  {
    "PAY_YEAR": "2015",
    "PAY_MONTH": "September"
  },
  {
    "PAY_YEAR": "2015",
    "PAY_MONTH": "October"
  },
  {
    "PAY_YEAR": "2015",
    "PAY_MONTH": "November"
  },
  {
    "PAY_YEAR": "2015",
    "PAY_MONTH": "December"
  }
]

我不想要这种 json。 我想要这张图片enter image description here

我的静态json代码如下:

<script type="text/javascript">
      $(document).ready(function(){
        // tree data
        var data = [{
            id: "0",
            text: "2017",
            data: {},
            children: [               
                    {id: "1", text: "January", data: {Action: '|'}},
                    {id: "2", text: "February", data: {Action: '|'}},
                    {id: "3", text: "March", data: {Action: '|'}},
                    {id: "4", text: "April", data: {Action: '|'}},
                    {id: "5", text: "May", data: {Action: '|'}},
                    {id: "6", text: "June", data: {Action: '|'}},
                    {id: "7", text: "July", data: {Action: '|'}},
                    {id: "8", text: "August", data: {Action: '|'}},
                    {id: "9", text: "September", data: {Action: '|'}},
                    {id: "10", text: "October", data: {Action: '|'}},
                    {id: "11", text: "November", data: {Action: '|'}},
                    {id: "12", text: "December", data: {Action: '|'}}            
            ],
            'state': {'opened': false},  
          }];

        // load jstree
        $("div#jstree").jstree({
          plugins: ["table","dnd","contextmenu"],
          core: {
            data: data,
            check_callback: true
          },
          // configure tree table
          table: {
            columns: [
              {width: 200, header: "Year"},
              {width: 150, value: "Action", header: "Action", format: function(v) {if (v){ return 'Print | Delete' }}},

            ],
            resizable: true,
            draggable: true,
            contextmenu: true,
            width: 400,
            height: 300
          }
        });
      });
    </script>

请帮助我使用动态 json 获取此类数据。我尝试了很多但没有任何想法。如您所见,我想要嵌套的 json。

最佳答案

试试这个:

    <?php
  include 'conn.php';
  $year=  array();
  $sql = mysqli_query($conn,'SELECT SALARY_SLIP_ID,ORG_ID,EMPLOYEE_ID,PAY_MONTH,PAY_YEAR FROM india_salary_slip_details where EMPLOYEE_ID = 31');
  while ($row = mysqli_fetch_array($sql ,MYSQLI_ASSOC)) 
  {

        if( !isset( $year[ $row['PAY_YEAR'] ] ) ) {

            $year[ $row['PAY_YEAR'] ] = array();

        }

        if( !isset( $year[ $row['PAY_YEAR'] ][ $row['PAY_MONTH'] ] ) ) {

            $year[ $row['PAY_YEAR'] ][ $row['PAY_MONTH'] ] = array();

        }


  }       
  echo json_encode($year);

?>

关于php - 在 php 中使用 mysql 数据创建嵌套动态 json?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47201453/

相关文章:

php - 在 PHP 中重命名 Mongo 集合

javascript - 正确的 JS 解析通过 JSON 传输的 URL

php - PHP分布式​​系统编程

javascript - 由于预检响应中存在 Access-Control-Allow-Methods,无法发送 PUT 请求

javascript - 访问 json 中的属性数组

jQuery append 表会自动在文本末尾添加结束标记。为什么?

php - 从 mysql 数据库创建 json 对象

php - 在php中获取变量值

mysql - Playframework 2.2 和 Heroku : Unable to connect to non-Heroku database

mysql - 创建一个查询以获得两个相同的结果