У меня есть следующие массивы, которые возвращают значения, основанные на определенных вычислениях:
print_r($adult_array);
print_r($children_array);
print_r($senior_array);
//Adult array start
Array
(
[0] => Array
(
[travel_plan] => Business
[premium_price] => 1336.81
[eligibility] => Up to 75 Yrs
[lower_limit] => 0
[upper_limit] => 75
[no_travellers] => 2
)
[1] => Array
(
[travel_plan] => Holiday
[premium_price] => 22960.81
[eligibility] => Up to 75 Yrs
[lower_limit] => 0
[upper_limit] => 75
[no_travellers] => 2
)
[2] => Array
(
[travel_plan] => Schengen
[premium_price] => 11740.81
[eligibility] => Up to 75 Yrs
[lower_limit] => 0
[upper_limit] => 75
[no_travellers] => 2
)
[3] => Array
(
[travel_plan] => Student
[premium_price] => 22960.81
[eligibility] => Up to 30 Yrs
[lower_limit] => 0
[upper_limit] => 30
[no_travellers] => 2
)
)
//Adult array end
//Children array start
Array
(
[0] => Array
(
[travel_plan] => Student
[premium_price] => 5740.205
[eligibility] => Up to 30 Yrs
[lower_limit] => 0
[upper_limit] => 30
[no_travellers] => 1
)
)
//Children array end
//Senior array start
Array
(
[0] => Array
(
[travel_plan] => Senior
[premium_price] => 38714.41
[eligibility] => 76 to 85 Yrs
[lower_limit] => 76
[upper_limit] => 85
[no_travellers] => 1
)
)
//Senior array end
Приведенный выше вывод массива извлекается и сохраняется различными переменными.Я хотел бы объединить / сгруппировать массивы в зависимости от плана поездки и одновременно суммировать премиальные тарифы для всех аналогичных планов поездки.Таким образом, существует только один массив для каждого плана командировки и сумма премиальной цены за план командировки.
Как этого добиться?Вывод должен быть следующим:
Array(
[0]=>Array(
[travel_plan] => Business
[premium_price] => 1336.81
[eligibility] => Up to 75 Yrs
[lower_limit] => 0
[upper_limit] => 75
[no_travellers] => 2
)
[1]=>Array(
[travel_plan] => Holiday
[premium_price] => 22960.81
[eligibility] => Up to 75 Yrs
[lower_limit] => 0
[upper_limit] => 75
[no_travellers] => 2
)
[2]=>Array(
[travel_plan] => Schengen
[premium_price] => 11740.81
[eligibility] => Up to 75 Yrs
[lower_limit] => 0
[upper_limit] => 75
[no_travellers] => 2
)
[3]=>Array(
[travel_plan] => Student
[premium_price] => 28701.015
[eligibility] => Up to 30 Yrs
[lower_limit] => 0
[upper_limit] => 30
[no_travellers] => 2
)
[4]=>Array(
[travel_plan] => Senior
[premium_price] => 38714.41
[eligibility] => Up to 30 Yrs
[lower_limit] => 0
[upper_limit] => 30
[no_travellers] => 1
)
)
Я пробовал следующую функцию, но она суммирует все значения в одно:
$final_package = array();
foreach ($travel_plan as $key => $values) {
foreach ($values as $label => $count) {
// Create a node in the array to store the value
if (!array_key_exists($label, $final_package)) {
$final_package[$label] = 0;
}
// Add the value to the corresponding node
if(is_string($count)){
$final_package[$label] = $count;
}else{
$final_package[$label] += $count;
}
}
}
// Sort the array in descending order of values
arsort($final_package);
print_r($final_package);
Предоставляя мне следующий вывод в качестве окончательного массива:
Array
(
[premium_price] => 103453.855
[travel_plan] => Senior
[upper_limit] => 85
[eligibility] => 76 to 85 Yrs
[lower_limit] => 76
[no_travellers] => 1
)