I have the next array:
Array
(
[0] => Array
(
[id] => 160
[payment_period] => Monthly
[plan_payment_type_id] => 171
[payment_type_id] => 4
)
[1] => Array
(
[id] => 160
[payment_period] => Monthly
[plan_payment_type_id] => 172
[payment_type_id] => 5
)
[2] => Array
(
[id] => 161
[payment_period] => Weekly
[plan_payment_type_id] => 173
[payment_type_id] => 9
)
)
I need to group this array by id. How can I do it in the best way? My output should be:
Array
(
[0] => Array
(
[id] => 160
[payment_period] => Monthly
[payment_types] => Array(
[0] => Array(
[plan_payment_type_id] => 171
[payment_type_id] => 4
)
[1] => Array(
[plan_payment_type_id] => 172
[payment_type_id] => 5
)
)
)
[1] => Array
(
[id] => 161
[payment_period] => Weekly
[payment_types] => Array(
[0] => Array(
[plan_payment_type_id] => 173
[payment_type_id] => 9
)
)
)
)
Thank you very much.
Something like this:
$output = array();
$id_array = array();
$i = 0;
foreach($input as $key=>$val) {
if(array_key_exists($val['id'],$id_array)) {
$pos = $id_array[$val['id']];
$output[$pos]['payment_types'][] = array('plan_payment_type_id'=> $val['plan_payment_type_id'],'payment_type_id' => $val['payment_type_id']);
} else {
$output[$i] = array('id' => $val['id'],'payment_period' => $val['payment_period'],'payment_types' => array(array('plan_payment_type_id'=> $val['plan_payment_type_id'],'payment_type_id' => $val['payment_type_id'])));
echo "Adding ",$val['id'],"\n";
$id_array[$val['id']] = $i;
$i++;
}
}
Working link
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With