i want create array can remove randomly content [id] key same [parent_id].
this array:
array ( [0] => array ( [parent_id] => 1 [id] => 286 ) [1] => array ( [parent_id] => 286 [id] => 142 ) [2] => array ( [parent_id] => 1 [id] => 287 ) [3] => array ( [parent_id] => 1 [id] => 288 ) [4] => array ( [parent_id] => 1 [id] => 289 ) [5] => array ( [parent_id] => 289 [id] => 140 ) [6] => array ( [parent_id] => 289 [id] => 143 ) [7] => array ( [parent_id] => 289 [id] => 242 ) )
i have generated following code:
$parentlist = array(); foreach ($list $item) { $parentlist[] = array("parent_id" => $item->parent_id, "id" => $item->id); } what can't figure out how transform array this:
array ( [0] => array ( [parent_id] => 1 [id] => array (286, 287, 288, 289) ) [1] => array ( [parent_id] => 286 [id] => array (142) ) [2] => array ( [parent_id] => 289 [id] => array (140, 143, 242) ) )
after have 1 id each parent id left randomly in each [id] array.
how can achieve this?
if key value in result don't matter, you're better of using parent_id key.
$result = array(); foreach ($list $entry) { $parent = $entry['parent_id']; // make base entry if (!array_key_exists($parent, $result)) { $result[$parent]['parent_id'] = $parent; } // append entry result $result[$parent]['id'][] = $entry['id']; } edit: if want result in single loop - realise meant - can try this:
$parentlist = array(); foreach ($list $item) { // make base entry, if doesn't exist yet if (!array_key_exists($item->parent_id, $parentlist)) { $parentlist[$item->parent_id]['parent_id'] = $item->parent_id; } // append item id parent container $parentlist[$item->parent_id]['id'][] = $item->id; }
Comments
Post a Comment