I am try to retrieve unique object with nested object property and value, is there a possible way to retrieve as json object key and their child property and value
JavaScript
x
SELECT id,name,year FROM `v_exam_schedule` ORDER BY year ASC;
+----+----------+----------+
| id | name | year |
+----+----------+----------+
| 3 | MID TERM | 2021 |
| 4 | Fina Exam| 2021 |
| 1 | Monthly | 2022 |
+----+----------+----------+
3 rows in set (0.001 sec)
php code for json encoding result of array
JavaScript
$arr = array();
$q = $db->query("SELECT id,name,year FROM `v_exam_schedule` ORDER BY year ASC");
while ($rs = $q->fetch_assoc()) {
$arr[] = array(
$rs['year'] => array(
"id" => $rs['id'],
"name" => $rs['name']
)
);
}
exit(json_encode($arr));
Result php code
JavaScript
[
{
"2022": {
"id": "1",
"name": "Monthly"
}
},
{
"2021": {
"id": "3",
"name": "MID TERM"
}
},
{
"2021": {
"id": "4",
"name": "FINAL EXAM"
}
}
]
I want to retrieve with unique object key for year like this below
JavaScript
[
{
"2022": {
"id": "1",
"name": "Monthly"
}
},
{
"2021": [
{
"id": "4",
"name": "FINAL EXAM"
},
{
"id": "3",
"name": "MID TERM"
}
]
}
]
Advertisement
Answer
Just change your code a bit:
JavaScript
$arr = [];//define array
while ($rs = $q->fetch_assoc()) {
//Do year base assignments
$arr[$rs['year']][] = array(
$rs['year'] => array(
"id" => $rs['id'],
"name" => $rs['name']
)
);
}
exit(json_encode(($arr)));