I'm creating nested (hierarchical) groups in JSON. The structure is simply - grand parent -> parent -> child:
main
secondary
mcondition
This is using the following MySQL/PHP to so far format main -> mcondition.
How should I change this to add the second level ('secondary' e.g. the parent level) between main and mcondition?
The column for secondary is mcondition.secondary
$query = 'SELECT * FROM mcondition ORDER BY mcondition.main ASC';
$result = $connection->query( $query );
$results = array();
$temp = array();
while ($line = mysqli_fetch_array($result)) {
$results[] = $line;
}
foreach($results as $row) {
$temp[$row['main']]['text'] = $row['main'];
if(!isset($temp[$row['main']]['children'])) {
$temp[$row['main']]['children'] = array();
}
array_push($temp[$row['main']]['children'], array(
'id' => $row['mcondition_pk'],
'text' => $row['mcondition_name']
));
}
$temp = array_values($temp);
echo json_encode($temp);
This is what the JSON currently looks like:
[
{
"text": "Main Heading 1",
"children": [
{
"id": "1",
"text": "mcondition_1"
},
{
"id": "17",
"text": "mcondition_4"
}
]
},
{
"text": "Main Heading 2",
"children": [
{
"id": "49",
"text": "mcondition_2"
},
{
"id": "48",
"text": "mcondition_5"
}
]
},
{
"text": "Main Heading 3",
"children": [
{
"id": "68",
"text": "mcondition_3"
},
{
"id": "67",
"text": "mcondition_6"
}
]
}
]
This is the structure of the table mcondition:
+---------------+------------+------+-----------+
| mcondition_pk | mcondition | main | secondary |
+---------------+------------+------+-----------+
Column mcondition is unique.