php - Multidimensional array with random removal of key values with minimum 1 left -


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