【问题标题】:How to return JSON response in below format from MySQL table in PHP如何从 PHP 中的 MySQL 表返回以下格式的 JSON 响应
【发布时间】:2015-04-04 19:52:10
【问题描述】:

在我的数据库表中,我将日期以 2015-03-22 这样的格式存储在日期列中。

|   mydate   |
------------
| 2015-03-22 |
| 2015-03-17 |
| 2015-04-02 |
| 2015-04-01 |

我需要JSON 来返回如下响应:

    {  
   "result": [{    
     "2014":[{}],
     "2015":[{
        "April":[
            "2015-04-05",
            "2015-04-04",
            "2015-04-03",
            "2015-04-01"
        ],
        "March":[
            "2015-03-25",
            "2015-03-14",
            "2015-03-07",
            "2015-03-01"
        ]
     }] 
   }]    
}

我尝试了这个查询,但未能像上面那样创建 JSON 对象:

$getDate = "SELECT DISTINCT( mydate), MONTHNAME( mydate ) AS m, YEAR( mydate ) as y 
FROM table_name 
GROUP BY m, mydate  ORDER BY mydate DESC";

【问题讨论】:

  • 你想用它做什么?我的意思是你的问题是什么?
  • 无法获得上述格式的 json 响应。无法理解如何以这种方式安排年、月和日期。
  • 将其编码为 json 很简单。您需要将数据库响应收集到数据结构中。
  • 我们这里没有很多规则,@Testing,但我们有很多指导方针。人们可以出于任何他们希望的原因投赞成票/反对票,但我的猜测是标题中的“尽快”被认为是相当厚颜无耻的(人们会在闲暇时正确地回答),并且没有证据表明之前的尝试。这里的读者通常会鼓励张贴者展示他们尝试过的东西,正如您所说,“现成代码”的请求有时不会受到欢迎。
  • @halfer 好吧,感谢您花时间向我解释,但 SO 不是为了提供现成的代码,而且大多数成员不鼓励它,因为它违反了编程和编码的道德规范。首先尝试,保持测试,保持清洁,保持代码,保持修复,你就有了最终的输出。如果不是,那么您应该遵循 SO 与您的代码和所有相关的事情,但问题应该是正确的并且很好地传递。 :)

标签: php mysql arrays json phpmyadmin


【解决方案1】:

需要依次定义嵌套数组:

$sql = "SELECT
    DISTINCT( mydate) AS `date`,
    MONTHNAME( mydate ) AS m,
    YEAR( mydate ) as y
FROM
    table_name
GROUP BY
    m, mydate
ORDER BY
    mydate DESC";

$result = mysqli_query($c, $sql);

$structure = array();
while ($row = mysqli_fetch_assoc($result))
{
    //year
    if(!isset($structure[$row['y']]))
    {
        $structure[$row['y']] = array();
    }

    //month inside the year
    if(!isset($structure[$row['y']][$row['m']]))
    {
        $structure[$row['y']][$row['m']] = array();
    }

    //date inside the month
    $structure[$row['y']][$row['m']][] = $row['date'];
}
mysqli_free_result($result);

//encode to json
$structure = array('result' => $structure);
$json = json_encode($structure);

【讨论】:

  • 完美的代码。很棒的写作方式。必须是最佳实践。 :) 你是如何把代码写得这么好的? :)
  • 真的我尝试了超过 3 小时,但现在我很高兴。 :)
  • @Testing 我在工作中遇到过类似的任务,很快就明白了,如何解决问题。谢谢:)
  • @SHAZ 很高兴,它有帮助。
  • @Testing 我可以推荐 SICP - 这是一门古老的课程(1985 年),但如果您观看讲座并解决书中的问题 - 这将非常有帮助。
猜你喜欢
  • 2013-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-26
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多