Суммирование всех элементов в подмассиве — PHP

#php #multidimensional-array

#php #многомерный массив

Вопрос:

У меня есть следующий массив как $main_array .Хотел суммировать все элементы в подмассиве, такие как [0]=>6, [1]=>11, [2]=>15.

 Array 
( 
[0] => Array 
       ( 
         [0] => 1 
         [1] => 2 
         [2] => 3 
       ) 
[1] => Array 
       ( 
         [0] => 2 
         [1] => 4 
         [2] => 5 
       ) 
[2] => Array 
       ( 
         [0] => 8 
         [1] => 4 
         [2] => 3 
         ) 
)
  

Попробовал следующий код.

 foreach ($main_array as $key => $value)
  $main_array[$key] = Array('1'=>array_sum($value));
print_r($main_array);
  

Но структура массива, которую я получил, была,

 Array 
( 
    [0] => Array 
    ( 
        [1] => 6 
    ) 
    [1] => Array 
    ( 
        [1] => 11
    ) 
    [2] => Array 
    ( 
        [1] => 15 
    ) 
)
  

Я ожидаю, что структура массива будет следующей.

 Array 
( 
    [0] => 6

    [1] => 11

    [2] => 15

)
  

Заранее спасибо!

Ответ №1:

Когда вы вызываете функцию массива, вы явно создаете массив, поэтому вам нужно удалить это из Array('1'=>array_sum($value));

Вот как должен выглядеть ваш код

 foreach ($main_array as $key => $value)
  $main_array[$key] = array_sum($value);
  

Ответ №2:

Попробуйте это:

   foreach ($main_array as $key => $value)
     $main_array[$key] = array_sum($value);
  

То есть поместите сумму непосредственно в массив верхнего уровня.

Ответ №3:

Вызывайте array_sum() для каждой строки вашего входного массива. array_map() делает эту операцию выразительной, краткой и не требует объявления каких-либо новых переменных.

Код: (Демо)

 $array = [
    [1, 2, 3],
    [2, 4, 5],
    [8, 4, 3],
];

var_export(array_map('array_sum', $array));
  

Вывод:

 array (
  0 => 6,
  1 => 11,
  2 => 15,
)