Reputation: 1114
i have a multidimensional array with this following array $menu_choice_in
:
array(5) {
[0]=>
array(1) {
[0]=>
array(1) {
["additional_price"]=>
string(3) "1.2"
}
}
[1]=>
array(2) {
[0]=>
array(1) {
["additional_price"]=>
string(3) "1.2"
}
[1]=>
array(1) {
["additional_price"]=>
string(3) "1.2"
}
}
[2]=>
array(2) {
[0]=>
array(1) {
["additional_price"]=>
string(1) "1"
}
[1]=>
array(1) {
["additional_price"]=>
string(1) "2"
}
}
[3]=>
array(2) {
[0]=>
array(1) {
["additional_price"]=>
string(3) "2.1"
}
[1]=>
array(1) {
["additional_price"]=>
string(3) "2.8"
}
}
[4]=>
array(0) {
}
}
i want trying to sum
the additional_price
and should be return it into multidimensional array too, like this :
array(5) {
[0]=>
array(1) {
["additional_price"]=>
string(3) "1.2"
}
[1]=>
array(1) {
["additional_price"]=>
string(3) "2.4"
}
[2]=>
array(1) {
["additional_price"]=>
string(1) "3"
}
[3]=>
array(1) {
["additional_price"]=>
string(3) "4.9"
}
[4]=>
array(1) {
["additional_price"]=>
string(3) "0"
}
}
guys can you help me? thank you(:
Upvotes: 0
Views: 68
Reputation: 92854
Short solution using array_walk
, array_sum
and array_column
(available since PHP 5.5) functions:
$result = [];
array_walk($menu_choice_in, function($v) use(&$result){
$prices = array_column($v, "additional_price");
$result[] = ["additional_price" => array_sum($prices)];
});
print_r($result);
Upvotes: 2
Reputation: 3318
This should work...
$sum_additional_price = array();
foreach ($menu_choice_in as $subarray) {
$additional_price = 0.0;
foreach ($subarray as $subsubarray) {
$additional_price += floatval($subsubarray['additional_price']);
$sum_additional_price[] = array('additional_price' => (string)$additional_price);
}
Upvotes: 0