2014-02-21 106 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

相关问题