如何用特定键对数组值求和[重复]

Posted

技术标签:

【中文标题】如何用特定键对数组值求和[重复]【英文标题】:How to sum array value with specific key [duplicate] 【发布时间】:2019-09-04 14:00:28 【问题描述】:
"accounts" => array:6 [
    0 => array:2 [
      "acc_id" => 1
      "balance" => 1000.00
    ]
    1 => array:2 [
      "acc_id" => 2
      "balance" => -1500.00
    ]
    2 => array:4 [
      "acc_id" => 3
      "balance" => 5000.00
    ]
]

您好,我怎样才能正确总结所有余额?

代码

foreach ($y['accounts'] as $k) 

    $sum_balance = $k['balance'];           

$sum_balance += $sum_balance;

使用此代码,结果只会将最后一个余额本身相加。示例结果为10000.00

【问题讨论】:

您将在循环的每次迭代中覆盖 $sum_balance,然后在循环后将其加倍。只需逐行浏览您的代码并积极尝试了解它在做什么 【参考方案1】:

你需要在 foreach 循环中增加 sum:

$sum_balance = 0;
foreach ($y['accounts'] as $k) 

    $sum_balance += $k['balance'];           

var_dump($sum_balance);

【讨论】:

【参考方案2】:

array_sum()array_column() 组合起来

array_column()

返回输入数组中单列的值

array_sum()

计算数组中值的总和

$y = [
    'accounts' => [
        0 => [
          "acc_id" => 1,
          "balance" => 1000.00
        ],
        1 => [
          "acc_id" => 2,
          "balance" => -1500.00
        ],
        2 => [
          "acc_id" => 3,
          "balance" => 5000.00
        ]
    ]
];

var_dump(
    array_sum(array_column($y['accounts'], 'balance'))
);


结果:float 4500

【讨论】:

您可能想为 OP 和未来的读者添加一些解释。 如果你匹配OPs数据结构会更好,在这种情况下你会想要array_sum(array_column($y['accounts'], 'balance'));【参考方案3】:

您的解决方案几乎是正确的,只需在循环之前初始化$sum_balance 并将其在循环内求和即可。

$sum_balance=0;
foreach ($y['accounts'] as $k) 

    $sum_balance += $k['balance'];           

希望对您有所帮助,如果您需要任何帮助,请随时联系。

【讨论】:

以上是关于如何用特定键对数组值求和[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何使用特定键对数组值求和

PHP按另一个数组中的特定键对数组进行排序[重复]

BigQuery 和 Firebase - 基于键对事件值求和

如何用相同的值替换双精度数组中的所有项目[重复]

Spark Scala 按唯一键对值求和

如何用空值初始化这种形式的数组? (Java)[重复]