2013-03-05 69 views
1

我已經使用MySql _fetch_assoc然後json_encode多維數組 - mysql_fetch_assoc到JSON

$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關聯數組?

+0

你應該張貼的,你怎麼來了你的結果你的PHP代碼。 – kennypu 2013-03-05 04:21:57

+0

更改你的mysql查詢。併發布一些代碼。 – 2013-03-05 04:25:15

+0

你可以在你的mysql查詢中使用['GROUP_CONCAT()'](http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat)(即''' GROUP_CONCAT(name_food)... GROUP by category_food'),然後'爆炸(')'GROUP_CONCAT(name_food)'數組。 – Sean 2013-03-05 04:29:20

回答

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); 
+0

這看起來非常好!謝謝你的幫助 – 2013-03-05 23:01:11

1
<?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); 
?>