In my php script I had this $array
variable.
$array = array('moduleID' => $row1['ModuleID'] , 'module' => $row1['moduleName']);
$array['items'][] = array('groupID' => $row2['GroupID'],'groupname' =>$row2['groupName'] ,'items' => $progName);
Any idea how can I combine both array into one variable? (without using array_merge
) So it can produce result like this.
[
{
moduleID: "LA1",
module: "Accounting",
items: [
{
groupID: "LA6",
groupname: "COA Management",
items: [
{
programID: "LA12",
programName: "Ledger Management"
},
{
programID: "LA24",
programName: "Group Management"
},
{
programID: "LA26",
programName: "Bank Accounts"
}
]
}
]
},
........
]
i try to do like this but it missing [ ]
after first items
$array = array('moduleID' => $row1['ModuleID'] , 'module' => $row1['moduleName'], 'items' => ['groupID' => $row2['GroupID'],'groupname' =>$row2['groupName'] ,'items' => $progName]);
I had somethig similar soon. And i used array_push
for that. Also I used a function to get a child. Then i put a function inside of array.
I used here for
loop. I'm sure u gonna use foreach
loop.
Try something like this :)
<?php
function ChildChild(){
$array = array();
for ($i=0; $i < 2 ; $i++) {
$array1 = array(
'programID' => 'programID',
'programName' =>'programName',
'ehorsProgramID' => 'ehorsProgramID'
);
array_push($array, $array1);
}
return $array;
}
function Child(){
$array = array();
for ($i=0; $i < 2 ; $i++) {
$array1 = array(
'groupID' => 'GroupID',
'groupname' =>'groupName',
'items' => ChildChild()
);
array_push($array, $array1);
}
return $array;
}
$main_array = array();
for ($e=0; $e < 2 ; $e++) {
$array1 = array(
'moduleID' => 'ModuleID',
'module' => 'moduleName',
'items' => Child()
);
array_push($main_array, $array1);
}
echo '<pre>';
print_r($main_array);
echo '</pre>';
OUTPUT FOR<2
Array
(
[0] => Array
(
[moduleID] => ModuleID
[module] => moduleName
[items] => Array
(
[0] => Array
(
[groupID] => GroupID
[groupname] => groupName
[items] => Array
(
[0] => Array
(
[programID] => programID
[programName] => programName
[ehorsProgramID] => ehorsProgramID
)
[1] => Array
(
[programID] => programID
[programName] => programName
[ehorsProgramID] => ehorsProgramID
)
)
)
[1] => Array
(
[groupID] => GroupID
[groupname] => groupName
[items] => Array
(
[0] => Array
(
[programID] => programID
[programName] => programName
[ehorsProgramID] => ehorsProgramID
)
[1] => Array
(
[programID] => programID
[programName] => programName
[ehorsProgramID] => ehorsProgramID
)
)
)
)
)
[1] => Array
(
[moduleID] => ModuleID
[module] => moduleName
[items] => Array
(
[0] => Array
(
[groupID] => GroupID
[groupname] => groupName
[items] => Array
(
[0] => Array
(
[programID] => programID
[programName] => programName
[ehorsProgramID] => ehorsProgramID
)
[1] => Array
(
[programID] => programID
[programName] => programName
[ehorsProgramID] => ehorsProgramID
)
)
)
[1] => Array
(
[groupID] => GroupID
[groupname] => groupName
[items] => Array
(
[0] => Array
(
[programID] => programID
[programName] => programName
[ehorsProgramID] => ehorsProgramID
)
[1] => Array
(
[programID] => programID
[programName] => programName
[ehorsProgramID] => ehorsProgramID
)
)
)
)
)
)
You will have to build inner array first while constructing the layers of these three arrays. Below is the sample code that will work fine for your case:
<?php
$array = array();
$modules = array();
/* logic to get array of modules goes here */
$modules = array(
array('ModuleID'=>'LA1', 'moduleName'=>'Accounting'),
array('ModuleID'=>'LA11', 'moduleName'=>'Development'),
);
foreach ($modules as $row1) {
$groups = array();
/* logic to get array of groups for $row1['ModuleID'] goes here */
$groups = array(
array('GroupID'=>'LA6', 'groupName'=>'COA Management'),
array('GroupID'=>'LA66', 'groupName'=>'COA Management Part 2'),
);
$groupItems = array();
foreach ($groups as $row2) {
$programItems = array();
/* logic to get array of programs for $row2['GroupID'] goes here */
$programItems = array(
array('programID'=>'LA12', 'programName'=>'Ledger Management'),
array('programID'=>'LA24', 'programName'=>'Group Management'),
array('programID'=>'LA26', 'programName'=>'Bank Accounts'),
);
$groupItems[] = array('groupID'=>$row2['GroupID'], 'groupname'=>$row2['groupName'], 'items'=>$programItems);
}
$array[] = array('moduleID' => $row1['ModuleID'] , 'module' => $row1['moduleName'], 'items'=>$groupItems);
}
echo '<pre>'. json_encode($array, JSON_PRETTY_PRINT) . '</pre>'; exit;
?>