PHP Sum multidimensional array values where certain index is the same(PHP对某个索引相同的多维数组值求和)
问题描述
这里只是一个简单的问题.我有以下数组:
just a simple problem here. I have the following array:
Array(21) {
[0] => Array(7) {
["punti"] => Integer 418
["vittorie"] => Integer 9
["podi"] => Integer 18
["gv"] => Integer 14
["id_pilota"] => Integer 1
["team"] => String(15) "Red Bull Racing"
["naz"] => String(2) "it"
}
[1] => Array(7) {
["punti"] => Integer 353
["vittorie"] => Integer 6
["podi"] => Integer 16
["gv"] => Integer 3
["id_pilota"] => Integer 19
["team"] => String(16) "Scuderia Ferrari"
["naz"] => String(2) "it"
}
[2] => Array(7) {
["punti"] => Integer 335
["vittorie"] => Integer 4
["podi"] => Integer 15
["gv"] => Integer 1
["id_pilota"] => Integer 5
["team"] => String(12) "Mercedes-AMG"
["naz"] => String(2) "it"
}
[3] => Array(7) {
["punti"] => Integer 181
["vittorie"] => Integer 1
["podi"] => Integer 5
["gv"] => Integer 1
["id_pilota"] => Integer 2
["team"] => String(12) "Mercedes-AMG"
["naz"] => String(2) "it"
}
[4] => Array(7) {
["punti"] => Integer 147
["vittorie"] => Integer 0
["podi"] => Integer 3
["gv"] => Integer 0
["id_pilota"] => Integer 14
["team"] => String(15) "Racing Point F1"
["naz"] => String(2) "mx"
}
[5] => Array(7) {
["punti"] => Integer 127
["vittorie"] => Integer 0
["podi"] => Integer 0
["gv"] => Integer 0
["id_pilota"] => Integer 13
["team"] => String(7) "Haas F1"
["naz"] => String(2) "dk"
}
减少到 21 个元素.
which goes down to 21 elements.
我的目标是根据每个飞行员的团队总结所有分数(punti"索引).所以要获得这样的东西:
My goal is to sum up all the points ("punti" indexes), based on each pilot's team. So to obtain something like this:
Array(10) {
[0] => Array(2) {
["team"] => String(...) "Mercedes-AMG")
["points"] => Integer 516
我知道这很容易,但是解决此类问题的最快/最方便的方法是什么?
I know this is quite easy, but what is the quickest / most convenient way to solve such problem?
推荐答案
你需要迭代你的结果,当你遇到一个新团队时在输出中添加一个新条目,或者当你找到同一个团队时更新积分值再次.这最容易通过最初按团队名称索引输出,然后使用 array_values
以数字方式重新索引数组:
You need to iterate over your results, adding a new entry to the output when you encounter a new team, or updating the points value when you find the same team again. This is most easily done by initially indexing the output by the team name, and then using array_values
to re-index the array numerically:
$teams = array();
foreach ($results as $result) {
$team = $result['team'];
if (!isset($teams[$team])) {
$teams[$team] = array('team' => $team, 'points' => $result['punti']);
}
else {
$teams[$team]['points'] += $result['punti'];
}
}
$teams = array_values($teams);
print_r($teams);
输出(用于您的样本数据):
Output (for your sample data):
Array
(
[0] => Array
(
[team] => Red Bull Racing
[points] => 418
)
[1] => Array
(
[team] => Scuderia Ferrari
[points] => 353
)
[2] => Array
(
[team] => Mercedes-AMG
[points] => 516
)
[3] => Array
(
[team] => Racing Point F1
[points] => 147
)
[4] => Array
(
[team] => Haas F1
[points] => 127
)
)
3v4l.org 上的演示
这篇关于PHP对某个索引相同的多维数组值求和的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:PHP对某个索引相同的多维数组值求和
基础教程推荐
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- 在多维数组中查找最大值 2021-01-01
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01