$r = array ( 0 => array ( 'Car' => array ( 'id' => '2', 'name' => 'BMW', ), 'Owner' => array ( 'id' => '4', 'car_id' => '2', 'name' => 'Bob', ), ), 1 => array ( 'Car' => array ( 'id' => '4', 'name' => 'Mercedes', ), 'Owner' => array ( 'id' => '4', 'car_id' => '4', 'name' => 'Jules', ), ), 2 => array ( 'Car' => array ( 'id' => '4', 'name' => 'Mercedes', ), 'Owner' => array ( 'id' => '4', 'car_id' => '4', 'name' => 'Simbad', ), ), 3 => array ( 'Car' => array ( 'id' => '4', 'name' => 'Mercedes', ), 'Owner' => array ( 'id' => '4', 'car_id' => '4', 'name' => 'El Savador', ), ), );
$cars = array();
foreach($r as $v) {
if(isset($cars[$v['Car']['id']])) {
$cars[$v['Car']['id']]['Owners'][] = $v['Owner'];
}else{
$cars[$v['Car']['id']] = array('Car' => $v['Car'], 'Owners' => array($v['Owner']));
}
}
echo '<pre>'.print_r($cars, true).'</pre>';
Is that more what you had in mind?