如何用特定键对数组值求和[重复]
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'];
希望对您有所帮助,如果您需要任何帮助,请随时联系。
【讨论】:
以上是关于如何用特定键对数组值求和[重复]的主要内容,如果未能解决你的问题,请参考以下文章