【问题标题】:Multi-dimensional Array - mysql_fetch_assoc to Json多维数组 - mysql_fetch_assoc 到 Json
【发布时间】:2013-03-05 04:19:50
【问题描述】:

我用过MySql_fetch_assoc 然后json_encode

    $type = mysql_query("SELECT type_food,category_food,name_food FROM menu ORDER BY type_food,category_food,name_food"); 
    $rows = array();
    while($t = mysql_fetch_assoc($type)) { 
          $rows[]= $t;      
    }
print json_encode($rows);

这给了我以下结果:

    {"type_food":"pizza","category_food":"Gourmet","name_food":"pepperoni"},
{"type_food":"pizza","category_food":"Gourmet","name_food":"supreme"},
{"type_food":"pizza","category_food":"Gourmet","name_food":"hawaiian"},
{"type_food":"pizza","category_food":"Gourmet","name_food":"tropical"},
{"type_food":"pizza","category_food":"traditional","name_food":"margherita"},
{"type_food":"pizza","category_food":"traditional","name_food":"vegetarian"}

但是我需要像这样制作一个多维 json 结果:

{"pizza": [
    {"Gourmet": [
                {"pepperoni"},
                {"supreme"},
                {"hawaiian"},
                {"tropical"}]},
    {"traditional": [
                {"margherita"},
                {"vegetarian"}]}
]},
{"etc": [ ... ]}

这可以使用 MySQL 关联数组吗?

【问题讨论】:

  • 您应该发布您的 PHP 代码,说明您是如何得出结果的。
  • 更改您的 mysql 查询。并发布一些代码。
  • 你可以在你的mysql查询中使用GROUP_CONCAT()(即GROUP_CONCAT(name_food) ... GROUP by category_food)然后explode()GROUP_CONCAT(name_food)数组。
  • mysql 结果通常是扁平的,不像树那样结构化。我认为您需要循环构建它。
  • 一个循环变得非常混乱,并且不知何故仍然不会产生预期的结果,除非我将它回显到它应该的方式并且不使用 json_encode

标签: php arrays multidimensional-array json


【解决方案1】:

试试这个:

$type = mysql_query("SELECT type_food,category_food,name_food FROM menu ORDER BY type_food,category_food,name_food"); 
$rows = array();
while($t = mysql_fetch_array($type)) { 
$rows[$t['type_food']][$t['category_food']][]=$t['name_food'];
}
print json_encode($rows);

【讨论】:

    【解决方案2】:
    <?php
    $str='[{"type_food":"pizza", "category_food":"Gourmet", "name_food":"pepperoni"},
    {"type_food":"pizza","category_food":"Gourmet","name_food":"supreme"},
    {"type_food":"pizza","category_food":"Gourmet","name_food":"hawaiian"},
    {"type_food":"pizza","category_food":"Gourmet","name_food":"tropical"},
    {"type_food":"pizza","category_food":"traditional","name_food":"margherita"},
    {"type_food":"pizza","category_food":"traditional","name_food":"vegetarian"}]';
    $rows=json_decode($str,true);
    $res=array();
    foreach($rows as $row)
    {
      $res[$row['type_food']][$row['category_food']][]=$row['name_food'];
    }
    echo json_encode($res);
    ?>
    

    【讨论】:

      猜你喜欢
      • 2016-05-15
      • 1970-01-01
      • 2017-03-27
      • 1970-01-01
      • 2021-09-06
      • 2018-12-18
      • 1970-01-01
      • 1970-01-01
      • 2020-05-27
      相关资源
      最近更新 更多