Kelvin
Kelvin

Reputation: 1114

how to calculate data with multidimensional array

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

Answers (2)

RomanPerekhrest
RomanPerekhrest

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

Barry
Barry

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

Related Questions