我在MySql中有2个表
栏目
ID Name
=====================
1 Section1
2 Section2
分类
ID SectionID Name
=========================================
1 1 Category1
2 1 Category2
3 2 Category3
这就是我现在所拥有的:
$sql_section = "select * from section";<br>
$sql_category = "select * from category";<br>
$result_section = mysql_query($sql_section) or die("Could not execute query.");
$result_category = mysql_query($sql_category) or die("Could not execute query.");
echo json_encode(???????);
我想在PHP中编写JSON以获得如下所示的结果:
{sections:[
{sectionName: "Section1", categoryList: [{categoryName: "category1"},
{categoryName: "category2"}]},
{sectionName: "Section1", categoryList: [{categoryName: "category3"}]}<br>
]}
如何设计一个看起来像这样的数组?
答案 0 :(得分:2)
$arr = array('sections' => array());
$arr['sections'][] = array('sectionName' => array('categoryList' => array( array('categoryName' => 'Category 1'), array('categoryName' => 'Category 2'))));
$arr['sections'][] = array('sectionName' => array('categoryList' => array( array('categoryName' => 'Category 3'), array('categoryName' => 'Category 4'))));
echo json_encode($arr);
输出://
{"sections":[
{"sectionName":
{"categoryList":
[{"categoryName":"Category 1"},
{"categoryName":"Category 2"}]}
},
{"sectionName":
{"categoryList":
[{"categoryName":"Category 3"},{"categoryName":"Category 4"}]}}]}
您只需要用变量替换字符串值并将其放入循环中以创建所需的数据集。
答案 1 :(得分:0)
这样的事情应该有效。
$sections = mysql_query("select * from section") or die("Could not execute query.");
$result = array();
if(mysql_num_rows($sections)>0) {
while($section = mysql_fetch_assoc($sections)) {
$result['sections'][$section['ID']] = $section['Name'];
$categories = mysql_query("select * from category where SectionID='".mysql_real_escape_string($section['ID'])."'");
if(mysql_num_rows($categories)>0) {
while($category = mysql_fetch_assoc($categories)) {
$result['sections'][$section['ID']]['categoryList'][$category['ID']] = $category['Name'];
}
}
}
}
echo json_encode($result);
它将输出如下,而不是sectionName作为索引我使用了更好的节ID。类别相同。
{sections:[
{sectionID: "SectionName", categoryList: [{categoryID: "categoryName"},
{categoryName: "category2"}]},
{sectionID: "SectionName", categoryList: [{categoryID: "categoryName"}]}<br>
]}
答案 2 :(得分:0)
$sections = array();
$categories = array();
while ($row = mysql_fetch_object($result_section))
$sections[$row->ID] = array('sectionName' => $row->Name, 'categoryList' => array());
while ($row = mysql_fetch_object($result_category))
$sections[$row->sectionID]['categoryList'][] = array('categoryName' => $row->Name);