简体   繁体   中英

Sum in a multidimensional PHP array

I have an array and it returns me as follows. I need to add their values, but depending on the account "cuenta", branch "ramo", sub-branch "subramo", specific "especifica" or sub-specific "subespecifica".

array(5) {
  [0]=>
  array(6) {
    ["cuenta"]=>
    string(1) "1"
    ["ramo"]=>
    string(1) "1"
    ["subramo"]=>
    string(1) "2"
    ["especifica"]=>
    string(2) "19"
    ["subespecifica"]=>
    string(1) "0"
    ["costo"]=>
    string(6) "354.00"
  }
  [1]=>
  array(6) {
    ["cuenta"]=>
    string(1) "1"
    ["ramo"]=>
    string(1) "1"
    ["subramo"]=>
    string(1) "2"
    ["especifica"]=>
    string(2) "11"
    ["subespecifica"]=>
    string(1) "0"
    ["costo"]=>
    string(6) "543.74"
  }
  [2]=>
  array(6) {
    ["cuenta"]=>
    string(1) "1"
    ["ramo"]=>
    string(1) "1"
    ["subramo"]=>
    string(1) "2"
    ["especifica"]=>
    string(2) "11"
    ["subespecifica"]=>
    string(1) "0"
    ["costo"]=>
    string(6) "985.54"
  }
  [3]=>
  array(6) {
    ["cuenta"]=>
    string(1) "1"
    ["ramo"]=>
    string(1) "1"
    ["subramo"]=>
    string(1) "1"
    ["especifica"]=>
    string(1) "8"
    ["subespecifica"]=>
    string(1) "0"
    ["costo"]=>
    string(6) "177.00"
  }
  [4]=>
  array(6) {
    ["cuenta"]=>
    string(1) "1"
    ["ramo"]=>
    string(1) "1"
    ["subramo"]=>
    string(1) "1"
    ["especifica"]=>
    string(1) "2"
    ["subespecifica"]=>
    string(1) "0"
    ["costo"]=>
    string(5) "88.50"
  }
}

I need to return the total amount depending on what I just mentioned. that is to say:

array(4) {
  [0]=>
  array(6) {
    ["cuenta"]=>
    string(1) "1"
    ["ramo"]=>
    string(1) "1"
    ["subramo"]=>
    string(1) "2"
    ["especifica"]=>
    string(2) "19"
    ["subespecifica"]=>
    string(1) "0"
    ["costo"]=>
    string(6) "354.00"
  }
  [1]=>
  array(6) {
    ["cuenta"]=>
    string(1) "1"
    ["ramo"]=>
    string(1) "1"
    ["subramo"]=>
    string(1) "2"
    ["especifica"]=>
    string(2) "11"
    ["subespecifica"]=>
    string(1) "0"
    ["costo"]=>
    string(6) "1529.28"
  }
  [2]=>
  array(6) {
    ["cuenta"]=>
    string(1) "1"
    ["ramo"]=>
    string(1) "1"
    ["subramo"]=>
    string(1) "1"
    ["especifica"]=>
    string(1) "8"
    ["subespecifica"]=>
    string(1) "0"
    ["costo"]=>
    string(6) "177.00"
  }
  [3]=>
  array(6) {
    ["cuenta"]=>
    string(1) "1"
    ["ramo"]=>
    string(1) "1"
    ["subramo"]=>
    string(1) "1"
    ["especifica"]=>
    string(1) "2"
    ["subespecifica"]=>
    string(1) "0"
    ["costo"]=>
    string(5) "88.50"
  }
}

You could use array_map:

<?php

$input = array(
    array(
        'first' => 1,
        'second' => 2,
    ),
    array(
        'third' => 3
    )
);

echo array_sum( array_map( function( $arr ) {
    return array_sum( $arr );
}, $input ) ); // Outputs 6

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM