Php 如何向上添加数组的值?
我有这样一个数组:Php 如何向上添加数组的值?,php,Php,我有这样一个数组: array(450) { [0] array(7) { ["team1_id"] int(1) ["team2_id"] int(2) ["wins"] int(2) ["draws"] int(0) ["losses"] int(0) ["version_id"] int(24) ["serie_id"] int(2) } [1]
array(450)
{
[0] array(7)
{
["team1_id"] int(1)
["team2_id"] int(2)
["wins"] int(2)
["draws"] int(0)
["losses"] int(0)
["version_id"] int(24)
["serie_id"] int(2)
}
[1] array(7)
{
["team1_id"] int(1)
["team2_id"] int(3)
["wins"] int(1)
["draws"] int(0)
["losses"] int(1)
["version_id"] int(24)
["serie_id"] int(2)
}
[2] array(7)
{
["team1_id"] int(1)
["team2_id"] int(4)
["wins"] int(0)
["draws"] int(2)
["losses"] int(0)
["version_id"] int(24)
["serie_id"] int(2)
}
[3] array(7)
{
["team1_id"] int(1)
["team2_id"] int(2)
["wins"] int(1)
["draws"] int(0)
["losses"] int(1)
["version_id"] int(23)
["serie_id"] int(2)
}
[4] array(7)
{
["team1_id"] int(1)
["team2_id"] int(3)
["wins"] int(1)
["draws"] int(0)
["losses"] int(1)
["version_id"] int(23)
["serie_id"] int(2)
}
[5] array(7)
{
["team1_id"] int(1)
["team2_id"] int(4)
["wins"] int(0)
["draws"] int(0)
["losses"] int(2)
["version_id"] int(23)
["serie_id"] int(2)
}
代码只是一个摘录-数组有450个元素。我想得到一个新的数组,其中赢、平、输的值被添加到元素中,其中team1\u id、team2\u id和serie\u id是相同的。版本id是不相关的
最后,摘录应该是3个元素,而不是6个元素
我怎样才能快速优雅地完成这个任务
编辑:
对不起,这是我试过的。但问题是,我只考虑了team1_id,但我需要team1_id、team2_id和serie_id的组合,然后将它们相加。然后我是否需要执行:if($bla[$standing['team1\u id'][$standing['team2\u id']]][$standing['serie\u id']])
像这样的事情应该可以做到:
$new_array = array();
foreach($main_array as $array) {
$new_array[] = array("team1_id" => $array["team1_id"], "team2_id" => $array["team2_id"], "serie_id" => $array["serie_id"], "total" => ((int)$array["wins"] + (int)$array["draws"] + (int)$array["losses"]));
}
var_dump($new_array);
然后在您的新数组中
,您可以这样访问总数:
$first_total = $new_array[0]["total"];
注意:我没有测试这一点,只是根据先前的知识解决方案:
function concatenateResults($standings) {
$conc = array();
foreach ($standings as $standing) {
if (!isset($conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']])) {
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['team1_id'] = $standing['team1_id'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['team2_id'] = $standing['team2_id'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['wins'] = $standing['wins'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['draws'] = $standing['draws'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['losses'] = $standing['losses'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['serie_id'] = $standing['serie_id'];
} else {
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['wins'] += $standing['wins'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['draws'] += $standing['draws'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['losses'] += $standing['losses'];
}
}//foreach
return $conc;
}
使用
foreach()
循环。还有,你尝试过什么?可能的重复和。看起来有人在寻找可能的重复,比如如果这是犯罪,就开始大喊“这里有可能的重复”,这样每个人都可以开始投票,直到用户不再被允许提问为止。
function concatenateResults($standings) {
$conc = array();
foreach ($standings as $standing) {
if (!isset($conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']])) {
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['team1_id'] = $standing['team1_id'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['team2_id'] = $standing['team2_id'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['wins'] = $standing['wins'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['draws'] = $standing['draws'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['losses'] = $standing['losses'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['serie_id'] = $standing['serie_id'];
} else {
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['wins'] += $standing['wins'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['draws'] += $standing['draws'];
$conc[$standing['serie_id']][$standing['team1_id']][$standing['team2_id']]['losses'] += $standing['losses'];
}
}//foreach
return $conc;
}