我正在从数据库中获取 JSON 文件,它有两个表 semone 和属性 id, semester, cname 和表 courses具有属性 coname 和 credit。
我用 php 编写的代码如下。
main.php
<?php
$user = "root";
$password = "";
$database = "scheduler";
$con = mysqli_connect("localhost", $user, $password, $database) or die ("Unable to connect");
$query = "SELECT semone.userid AS id, semone.semester AS semester, semone.cname AS name, courses.credit AS value
FROM semone
INNER JOIN courses
ON semone.cname = courses.coname" ;
$result = mysqli_query($con,$query)or die ("Unable to connect");
$info = array();
$test = array();
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
$row['xyz'] = array(
'name'=> $row['name'],
'value'=> $row['value']
);
$info[$row['id']]['children'][$row['semester']]['children'][]= $row['xyz'];
}
$data = json_encode(($info));
echo $data;
?>
我想获取 JSON 文件,如以下代码所示,但我得到的是这样的东西。
输出.json
{
"12345": {
"children": {
"first": {
"children": [{
"name": "C101",
"value": 100
},
{
"name": "C102",
"value": 100
}]
},
"second": {
"children": [{
"name": "C103",
"value": 50
}, {
"name": "C104",
"value": 100
}, {
"name": "C105",
"value": 100
}]
},
"third": {
"children": [{
"name": "C106",
"value": 50
}]
}
}
}
}
但这正是我所期待的。
expected.json
{
"id": 12345,
"children": [{
"semester": "first",
"children": [{
"name": "C101",
"value": 100
},
{
"name": "C102",
"value": 100
}]
}, {
"semester": "second",
"children": [{
"name": "C103",
"value": 50
}, {
"name": "C104",
"value": 100
}, {
"name": "C105",
"value": 100
}]
}, {
"semester": "third",
"children": [{
"name": "C106",
"value": 50
}]
}
}
最佳答案
您可能应该以不同的方式构建数组:
$info[] = array(
array('id' => $row['id']),
'children' => array(
'semester' => $row['semester'],
'children' => $row['xyz']
)
);
关于php - 来自 Php 和数据库的嵌套 JSON 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32552131/