php - DYNAMIC ARRAY BUILDING

one text

Here, I will show what I tried, here is my code:

<?php
require('../db_connection.php');

$data = json_decode(file_get_contents("php://input"));
// $groupId = $data->groupId;
$groupId = '0000000001';

$menus = array();
$items = array();

$query = mysqli_query($db_conn, "SELECT DISTINCT module_id, module_name_eng
                                FROM v_usergroupappitems
                                WHERE group_id = '".$groupId."' AND module_active = 1 ORDER BY module_id");

while ($modules = mysqli_fetch_assoc($query)) {
    $menus[] = $modules;
    $module_id = $modules['module_id'];

    $items_query = mysqli_query($db_conn, "SELECT item_id, item_name_eng, page_link
                                    From v_usergroupappitems
                                    WHERE module_id = '$module_id' 
                                    AND group_id = '".$groupId."' 
                                    AND active = 1 ORDER BY 'item_id' ");

    while ($item_list = mysqli_fetch_assoc($items_query)) {
        $items[] = $item_list;
        array_push($menus, $items);
    }
}
// echo $rows;
echo json_encode($menus);
?>

I could return an array of modules using:

$menus[] = $modules;

like this:

[{"module_id":"1","module_name_eng":"Application Administration"},{"module_id":"2","module_name_eng":"Outpatient Data Setup"},{"module_id":"3","module_name_eng":"Medical Insurance Companies"},{"module_id":"4","module_name_eng":"Outpatient Section"},{"module_id":"5","module_name_eng":"Outpatient Doctors` Fees"},{"module_id":"6","module_name_eng":"Patient Visit Medical Records"},{"module_id":"7","module_name_eng":"Inpatient Data Setup"},{"module_id":"8","module_name_eng":"Inpatient Section"},{"module_id":"12","module_name_eng":"Money Setup-Transactions-Reports"}]

what I need is to add each module items as array inside its object, just like that:

[{"module_id":"1","module_name_eng":"Application Administration", "items": [{"item_id":"1","item_name_eng":"Company Data","page_link":"link1"},{"item_id":"2","item_name_eng":"User Groups","page_link":"link2"}]}]

but my problem is: i am getting that:

[{"module_id":"1","module_name_eng":"Application Administration"},[{"item_id":"1","item_name_eng":"Company Data","page_link":"..\/sa\/company.php"}],[{"item_id":"1","item_name_eng":"Company Data","page_link":"..\/sa\/company.php"},{"item_id":"2","item_name_eng":"User Groups","page_link":"\/dashboard\/usergroupslist"}],[{"item_id":"1","item_name_eng":"Company Data","page_link":"..\/sa\/company.php"},{"item_id":"2","item_name_eng":"User Groups","page_link":"\/dashboard\/usergroupslist"},{"item_id":"3","item_name_eng":"System Users","page_link":"..\/SA\/user.php"}],[{"item_id":"1","item_name_eng":"Company Data","page_link":"..\/sa\/company.php"},{"item_id":"2","item_name_eng":"User Groups","page_link":"\/dashboard\/usergroupslist"},{"item_id":"3","item_name_eng":"System Users","page_link":"..\/SA\/user.php"},{"item_id":"64","item_name_eng":"Users System Login","page_link":"..\/sa\/rpt_users_login.php"}],[{"item_id":"1","item_name_eng":"Company Data","page_link":"..\/sa\/company.php"},{"item_id":"2","item_name_eng":"User Groups","page_link":"\/dashboard\/usergroupslist"},{"item_id":"3","item_name_eng":"System Users","page_link":"..\/SA\/user.php"},{"item_id":"64","item_name_eng":"Users System Login","page_link":"..\/sa\/rpt_users_login.php"},{"item_id":"65","item_name_eng":"User System Login","page_link":"..\/sa\/rpt_user_login.php"}],{"module_id":"2","module_name_eng":"Outpatient Data Setup"},[{"item_id":"1","item_name_eng":"Company Data","page_link":"..\/sa\/company.php"},{"item_id":"2","item_name_eng":"User Groups","page_link":"\/dashboard\/usergroupslist"},{"item_id":"3","item_name_eng":"System Users","page_link":"..\/SA\/user.php"},

that is not the structure i need to get, i need the following structure:

[{"module_id":"1","module_name_eng":"Application Administration", "items": [{"item_id":"1","item_name_eng":"Company Data","page_link":"link1"},{"item_id":"2","item_name_eng":"User Groups","page_link":"link2"}]}]

Source