Сумма поля в многомерном массиве - PullRequest
0 голосов
/ 07 мая 2019

Если у меня есть массив как:

array (
0=>array('name'=>'x','score1'=>10, 'score2'=>20),
1=>array('name'=>'y','score1'=>10, 'score2'=>20),
2=>array('name'=>'z','score1'=>10, 'score2'=>20),
)

Есть ли способ использования array_sum () для суммирования одного поля, такого как Score1? php manual подразумевает, что он добавит содержимое массива, но я не вижу, как обусловить добавление содержимого определенного ключа в массив.

Да, я могу перебрать массив, но я пытаюсь избежать этого.

Ответы [ 2 ]

1 голос
/ 07 мая 2019

используйте array_column и array_sum.
Array_column изолирует все элементы "Score1" и "Score2" и массив_сум будет ... суммировать их.

$score1 = array_sum(array_column($arr, "score1")); // 30
$score2 = array_sum(array_column($arr, "score2")); // 60

, если у вас есть неизвестное количество "баллов""тогда вам нужно зациклить один подмассив и использовать ключ.

foreach($arr[0] as $key => $sub){
    if(substr($key,0,5) == "score") $res[$key] = array_sum(array_column($arr, $key));
}
1 голос
/ 07 мая 2019

Да, есть способ,

echo array_sum(array_column($array,'score1'));

array_sum - Рассчитать сумму значений в массиве
array_column - Вернуть значения из одногостолбец во входном массиве

Здесь работает демо .

...