2013-10-02 20 views
-3

我有一個這樣的陣列:如何添加數組的值?

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_id,team2_id和serie_id相同的元素中。 version_id是無關緊要的。

到底應該摘錄然後3個元素,而不是6

我怎樣才能做到這一點快速而優雅?

編輯:

對不起,這是我試過的。但問題是我只考慮了team1_id,但我需要team1_id,team2_id和serie_id的組合,然後將它們相加。那我應該怎麼做:if ($bla[$standing['team1_id']][$standing['team2_id']][$standing['serie_id']])

foreach ($standings as $standing) { 

    if (!isset($bla[$standing['team1_id']])) {   
     $bla[$standing['team1_id']]['team1_id'] = $standing['team1_id']; 
     $bla[$standing['team1_id']]['team2_id'] = $standing['team2_id']; 
     $bla[$standing['team1_id']]['wins'] = $standing['wins']; 
     $bla[$standing['team1_id']]['draws'] = $standing['draws']; 
     $bla[$standing['team1_id']]['losses'] = $standing['losses']; 
     $bla[$standing['team1_id']]['serie_id'] = $standing['serie_id']; 
    } else { 
     $bla[$standing['team1_id']]['wins']  += $standing['wins']; 
     $bla[$standing['team1_id']]['draws'] += $standing['draws']; 
     $bla[$standing['team1_id']]['losses'] += $standing['losses'];   
    } 
    return $bla; 

} 
+4

以'的foreach()'循環。另外,你有什麼嘗試? – Crontab

+0

可能的重複[here](http://stackoverflow.com/questions/2771284/how-to-add-values-in-multidimensional-array)和[here](http://stackoverflow.com/questions/6695140/如何-可以-I-附加所有的值功能於一個陣列)。 – ajp15243

+1

它看起來像是有人的工作,尋找可能的重複,就像這是一種犯罪,並開始大喊「在這裏發現可怕的複製品」,所以每個人都可以前來投票回答問題,讓用戶不再被問到了。 – slash28cu

回答

0

解決辦法:

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; 
} 
-1

像這樣的東西應該做的伎倆:

$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); 

然後在你new_array,您可以訪問總像這樣:

$first_total = $new_array[0]["total"]; 

More documentation on the foreach() loop

注意:我沒有測試這個,只是去o FF先驗知識