Вы застряли, потому что вы пытаетесь создать перечислимый массив, когда вы действительно хотите сгруппировать это по идентификатору массива .Просто используйте поле "id" в качестве целевого индекса:
foreach ($in as $src) {
extract($src);
$output[$id]["id"] = $id;
$output[$id]["payment_period"] = $payment_period;
$output[$id]["payment_types"][] = array(
"plan_payment_type_id" => $plan_payment_type_id,
"payment_type_id" => $payment_type_id,
);
}
Конечно, вы можете использовать длинные имена переменных $ src [] вместо ярлыка evil extract ().
В любом случае, этоМетод группирует ваш выходной массив по $ id, но также сохраняет внутренний ключ "id" => $ id.