How can i group by adult price then get the sum of adult count. here is my array bellow:
Array
(
[0] => Array
(
[Reservation] => Array
(
[adult_price] => 2000
[adult_count] => 2
)
)
[1] => Array
(
[Reservation] => Array
(
[adult_price] => 2000
[adult_count] => 1
)
)
[2] => Array
(
[Reservation] => Array
(
[adult_price] => 300
[adult_count] => 1
)
)
)
Expected Result if adult_price is same thats the time that the adult_count will add:
Array
(
[0] => Array
(
[Reservation] => Array
(
[adult_price] => 2000
[adult_count] => 4
)
)
[1] => Array
(
[Reservation] => Array
(
[adult_price] => 300
[adult_count] => 1
)
)
)
Please help me thank you!
Advertisement
Answer
Try this:
$grouped = [];
foreach ($array as $item) {
$item = $item["Reservation"];
$currentValue = isset($grouped[$item["adult_price"]]) ? $grouped[$item["adult_price"]] : 0;
$grouped[$item["adult_price"]] = $currentValue + $item["adult_count"];
}
$buildArray = [];
foreach ($grouped as $price => $count) {
$buildArray[] = ["Reservation" => ["adult_price" => $price, "adult_count" => $count]];
}
print_r($buildArray);