#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,
)