【发布时间】:2014-09-01 10:16:38
【问题描述】:
This is almost exactly what I want,但是这个问题还没有回答,已经一年了。我想我已经接近了,但数字被打印为键。在我的示例中,它显示在第 47 行,但对于实际文件中的每个“course_name”都会重复。
[
{
"school_name": "Projects",
"terms": [
{
"term_name":"category_name#1",
"departments": [
{
"department_name":"sub_category_name1",
"department_code":"category code text here",
"courses":[
{
"course_name": "project1",
"course_code":"project 1 code text goes here",
"sections":[
{
"section_code":"mike",
"unique_id":"xxx@mail.com"
},
{
"section_code":"dan",
"unique_id":"xxx@gmail.com"
}
]
},
{
"course_name": "project2",
"course_code":"project 2 code text goes here",
"sections":[
{
"section_code":"steve",
"unique_id":"xxx@mail.com"
},
{
"section_code":"chris",
"unique_id":"xxx@gmail.com"
}
]
}
]
},
{
"department_name": "sub_category_name2",
"department_code":"sub category description text goes here..",
"courses": {
-->>> "69": {
"course_name": "project3",
"course_code":"project3 code text goes here ",
"sections":[
{
"section_code":"Alex",
"unique_id":"xxx@gmail.com"
}
]
}
}
}
]
}
]
}
]
这是我正在使用的查询和返回数据的示例。
SELECT school_name, term_name, department_name, department_code, course_code, course_name, section_code, magento_course_id
FROM schools INNER JOIN term_names ON schools.id=term_names.school_id INNER JOIN departments ON schools.id=departments.school_id INNER JOIN
adoptions ON departments.id=adoptions.department_id
"UCA-2" "SPRING 2013" "ACCOUNTING" "ACCT" "3315" "COST ACCOUNTING" "10258" 10311
我所拥有的是用这段代码生成的。
$row_array = array();
$terms = array();
$departments = array();
$courses = array();
$h = 0;
$i = 0;
$j = 0;
while ($row = mysqli_fetch_assoc($fetch)) {
$row_array[$row['school_name']]['school_name'] = $row['school_name'];
$akey = array_search($row['term_name'], $terms);
if ($akey === FALSE) {
$m = $h++;
$terms[] = $row['term_name'];
$row_array[$row['school_name']]['terms'][$m]['term_name'] = $row['term_name'];
} else {
$m = $akey;
}
$key = array_search($row['department_code'], $departments);
if ($key === FALSE) {
$k = $i++;
$departments[] = $row['department_code'];
$row_array[$row['school_name']]['terms'][$m]['departments'][$k]['department_name'] = $row['department_name'];
$row_array[$row['school_name']]['terms'][$m]['departments'][$k]['department_code'] = $row['department_code'];
} else {
$k = $key;
}
$skey = array_search($row['course_code'], $courses);
if ($skey === FALSE) {
$l = $j++;
$courses[] = $row['course_code'];
$row_array[$row['school_name']]['terms'][$m]['departments'][$k]['courses'][$l]['course_name'] = $row['course_name'];
$row_array[$row['school_name']]['terms'][$m]['departments'][$k]['courses'][$l]['course_code'] = $row['course_code'];
} else {
$l = $skey;
}
$row_array[$row['school_name']]['terms'][$m]['departments'][$k]['courses'][$l]['sections'][] = array('section_code' => $row['section_code'], 'unique_id' => $row['magento_course_id']);
}
如何在不显示这些数字的情况下生成此 JSON?
【问题讨论】:
-
您到底在寻找什么?您希望课程是对象数组而不是大键/值对象吗? [{course},{course2}] 而不是 {key:{course},key2:{course2}}?
-
我知道你把这件事弄得很复杂,发布查询和查询返回的一些示例数据。
-
@snowman4415 我试图输出的是直到我的示例第 46 行的模式。这就是模式发生变化的地方。
-
@RiggsFolly 我已将我的查询添加到我的问题和示例数据中。由于我需要特定的格式,这是我尝试使用的最简单的方法。
标签: php mysql json database multidimensional-array