我有数据库的结果。
Array
(
[0] = stdClass Object
(
[name] = First
[sum] = 3,8,...
)
[1] = stdClass Object
(
[name] = Second
[sum] = -1,0,...
)
[2] = stdClass Object
(
[name] = Third
[sum] = 2,-1...
)
)
所以现在我需要对“sum”列中的所有内容进行求和。
我需要得到像这样的结果
$final = (4, 7,...);
我已将 sum 转换为数组 throw explode(),然后尝试使用 foreach
例如
foreach ($result as $k=>$subArray) {
$arrayNumbers = explode(",",$subArray->sum);
foreach ($arrayNumbers as $key => $value) {
$sumArray[] = $value];
$stepToSum2[] = array_sum($sumArray);
}
unset($arrayNumb);
}
不确定我的示例是否有效,因为我已经被注释代码困住了。
无论如何,我通过一些操作可以获得第一个数字 (5) 或数组总和 (11) 的正确值或求和。
与此相同的结果
$sum = array_sum(array_map(function($var) {
return $var['sum'];
}, $myResultArray));
我已经搜索了答案,但大多数答案仅针对两个数组,但在同一个表中,我有超过5个数组,所以我不知道如何实现这个。
最佳答案
array_reduce
非常适合将数组减少为单个值,就像您在这里所做的那样。它需要一个数组和一个函数来更新数组中每个项目的“进位”值。
$result = array_reduce($your_array, function($carry, $item) {
foreach (explode(',', $item->sum) as $key => $value) {
$carry[$key] = $value + (isset($carry[$key]) ? $carry[$key] : 0);
// (OR $carry[$key] = $value + ($carry[$key] ?? 0); in PHP 7)
}
return $carry;
}, []);
关于php - PHP中的数组求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40044890/