php - PHP中的数组求和

标签 php mysql arrays

我有数据库的结果。

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/

相关文章:

javascript - 对对象数组内的对象数组中的值进行排序

javascript - 防止 Blade php函数编码符号

php - 将更新的谷歌地图可拖动标记的纬度和经度传递到另一个页面

php - 使用 PDO 检查数据重复项

c:段错误(选择排序)

javascript - 用不重复的随机数填充数组

Javascript 视频 Blob URL 和 MPEG-Dash

PHP CURL 发送 POST 到 Django 应用程序问题

Mysql 和 Flyway 命令行 afterMigrate.sql 具有多个文件

mysql - Teradata 上的 Inner Join 有问题