Получить сумму массивов внутри массива - PullRequest
0 голосов
/ 05 ноября 2018

Как получить сумму этих массивов.

$arrays = [[0, 176000], [0,500], [0, 3960000]];

Выход должен быть:

$arrays = [0, 4136500];

Любая помощь будет высоко ценится.

Ответы [ 4 ]

0 голосов
/ 05 ноября 2018

Ответ U_mulders работает, если нет ключей для отслеживания.

Если у вас есть ассоциативный массив, вам нужно зациклить массив и собрать значения, например:

$arrays = [[0,"A" => 176000], [0, "b" => 500], [0, 3960000, 200], [10, 500, 200]];

foreach($arrays as $sub){
    foreach($sub as $key => $num){
        if(!isset($new[$key])) $new[$key] =0;
        $new[$key] += $num;
    }
}
var_dump($new);

Выход:

array(5) {
  [0]=>
  int(10)
  ["A"]=>
  int(176000)
  ["b"]=>
  int(500)
  [1]=>
  int(3960500)
  [2]=>
  int(400)
}

https://3v4l.org/NbNVg

0 голосов
/ 05 ноября 2018

В Larevel вы можете использовать коллекций . Например:

    $a = collect([[0, 176000], [0,500], [0, 3960000]]);
    $b = new Collection;
    foreach ($a as $k => $e) {
        $b->push ( $a->pluck($k)->sum() );
    }

    $c = $b->take(2); // Result is going to be here
0 голосов
/ 05 ноября 2018

это использует родной путь (но я думаю, что нужно переделать)

<?php
$arrays = [[0, 176000], [0,500], [0, 3960000]];
$new_arrays = [];
foreach ($arrays as $key => $val) {
  $new_arrays[0] += $val[0];
  $new_arrays[1] += $val[1];
}
print_r($new_arrays);
0 голосов
/ 05 ноября 2018

Использование переменных аргументов и null обратного вызова для первого array_map:

$arrays = [[0, 176000], [0,500], [0, 3960000]];
print_r(array_map('array_sum', array_map(null, ...$arrays)));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...