I am trying to rebuild php array, which I can get with one query from database. To build lists and add items I need the array to be grouped and rebuild. From query I receive array like this:
array (
0 =>
array (
'item_id' => '1',
'item_name' => 'aaa',
'group_id' => '7',
'group_name' => 'first'
),
1 =>
array (
'item_id' => '2',
'item_name' => 'bbb',
'group_id' => '7',
'group_name' => 'first'
),
2 =>
array (
'item_id' => '3',
'item_name' => 'ccc',
'group_id' => '9',
'group_name' => 'second'
),
3 =>
array (
'item_id' => '4',
'item_name' => 'ddd',
'group_id' => '9',
'group_name' => 'second'
)
);
I need to rearrange this array to following, which I can use for js parsing:
array(
array ('group_id' => '7', 'group_name' => 'first', 'items' => array (
0 => array (
'item_id' => '1',
'item_name' => 'aaa',
),
1 => array (
'item_id' => '2',
'item_name' => 'bbb',
)
)
),
array ('id' => '8', 'name' => 'second', 'items' => array (
0 =>
array (
'item_id' => '3',
'item_name' => 'ccc',
),
1 =>
array (
'item_id' => '4',
'item_name' => 'ddd',
)
)
)
);
I have stuck with following code:
function rebuild($groupby, $param, $data) {
$newarray = array();
foreach($data as $key => $val) {
if(array_key_exists($groupby, $val)){
$newarray[$val[$groupby]] = $val[$param];
$newarray['items'][] = $val;
}else{
$newarray[""][] = $val;
}
}
return $newarray;
}
$show = rebuild('group_id', 'group_name', $data);
echo "<pre>" . var_export($show, true) . "</pre>";
Any advise would appreciated.