2014-02-21 102 views
0

我有一個多維數組,我需要合併一些數據。PHP多維數組中的密鑰與另一個密鑰相匹配

我的陣列看起來像這樣(有很多更多的數據我裁剪出來的例子):

Array 
(
    [0] => Array 
     (
      [date] => 20-02-2014 
      [tool] => mystuff1 
      [usage] => 447 
      [minutes] => 6705 
     ) 

    [1] => Array 
     (
      [date] => 20-02-2014 
      [tool] => mystuff2 
      [usage] => 20 
      [minutes] => 1200 
     ) 

將有超過一個子陣列上,工具= mystuff1我要添加所有具有mystuff1的「分鐘」鍵。最終我想和mystuff2加起來一樣(除了那些還有其他「工具」鍵)。

我試過了幾個例子, 1鍵的名字,即'分鐘',但不是我能找到的地方,我可以在'工具'匹配時總結'分鐘'。

回答

1

您可以通過數組循環和分鐘值添加到輸出數組的數組鍵

$output = array(); 

foreach($your_array as $current) { 
    // create the array key if it doesn't exist already 
    if(!array_key_exists($current['tool'], $output)) 
     $output[$current['tool']] = 0; 

    // add minutes to the current tool total 
    $output[$current['tool']] += $current['minutes']; 
} 

這樣你就可以期待這樣的結果:

Array 
(
    [mystuff1] => 6705 
    [mystuff2] => 1200 
) 
+0

那效果很好。有一件事,如果我有一個類似的設置,但想從彼此減去值,我不會使用 - =而不是+ =?如果我現在這樣做,我會得到一個負數,而不是正確的結果。例如:用+ =我得到13410與 - =我得到-13410 – Jason

+0

你是什麼意思的正確結果?如果我從零中刪除一個數字,我認爲它是負數...... –

+0

可以這麼說,其中一個值爲6500,另一個值爲500.如果I + =它們現在是7000.對於某些如果我 - =它顯示-7000的原因。我預計6000以來6500-500 = 6000。我誤解了代碼實際在做什麼? – Jason

相關問題