PHP Array re-arrange to Multi Dimensional -
i have array structure , wanted re-arrange 1 below. suggestions faster/simple fix? did addition of dates. thanks! :)
input:
array ( [0] => array ( [user_id] => 255 [display_name] => mark [company_name] => company_a ) [1] => array ( [user_id] => 150 [display_name] => paul [company_name] => company_a ) [2] => array ( [user_id] => 25 [display_name] => hulk [company_name] => company_b ) [3] => array ( [user_id] => 50 [display_name] => bob [company_name] => company_b ) )
output:
array ( [company_a] => array ( [company_total_hours] => 20h 45m [employees] => array ( [0] => array ( [user_id] => 255 [display_name] => mark ) [1] => array ( [user_id] => 150 [display_name] => paul ) ) ) [company_b] => array ( [company_total_hours] => 7h 30m [employees] => array ( [0] => array ( [user_id] => 25 [display_name] => hulk ) [1] => array ( [user_id] => 50 [display_name] => bob ) ) ) )
my attempts:
<?php $company_names = array(); foreach ($records $k => $v) { $company_names[] = $v->company_name; } $company_names = array_unique($company_names); // hard coded testing if (count($company_names) > 0) { foreach($company_names $k2 => $v2) { $final_array[$v2]['company_total_hours'] = rand(1, 20); $final_array[$v2]['employees'] = array( array('user_id' => '255', 'display_name' => 'mark'), array('user_id' => '150', 'display_name' => 'paul') ); } } // on-going testing right here....
i don't see derive hours left out.
$i = 0; foreach($vals $keys => $arrays) { if(!isset($new[$arrays['company_name']])) $i = 0; $new[$arrays['company_name']]['employees'][$i]['display_name'] = $arrays['display_name']; $new[$arrays['company_name']]['employees'][$i]['user_id'] = $arrays['user_id']; $i++; }
gives you:
array ( [company_a] => array ( [employees] => array ( [0] => array ( [display_name] => mark [user_id] => 255 ) [1] => array ( [display_name] => paul [user_id] => 150 ) ) ) [company_b] => array ( [employees] => array ( [0] => array ( [display_name] => hulk [user_id] => 25 ) [1] => array ( [display_name] => bob [user_id] => 50 ) ) ) )
Comments
Post a Comment