我有下一个数组:
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
)
)
我需要按 id 对这个数组进行分组。我怎样才能以最好的方式做到这一点? 我的输出应该是:
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
)
)
)
)
非常感谢。
最佳答案
像这样:
$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++;
}
}
关于php数组组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3941084/