2012-04-04 56 views
0

我有如下所示的数组。我想要得到一个结果数组,其中[tv],[tu],[cost],[km]的值对所有具有相同值[tick_id]的行进行求和。在这个例子中,我们应该总结数组元素0,1,2,...的值[tv],[tu],[cost],[km] ...我该怎么做?与嵌套关联数组中相同键关联的值的总和

Array (
    [0] => stdClass Object (
     [id] => 15 
     [user_id] => 44 
     [name] => inspector1 
     [tv] => 0.00 
     [tc] => 0.00 
     [tu] => 0.00 
     [cost] => 0.00 
     [kms] => 0 
     [date_s] => 2012-03-30 
     [notes] => 
     [tick_id] => 11 
     [tot_fee] => 5500 
    ) 
    [1] => stdClass Object (
     [id] => 39 
     [user_id] => 46 
     [name] => Assistant 
     [tv] => 10.00 
     [tc] => 0.00 
     [tu] => 4.50 
     [cost] => 0.00 
     [kms] => 120 
     [date_s] => 2012-03-31 
     [notes] => 
     [tick_id] => 15 
     [tot_fee] => 0 
    ) 
    [2] => stdClass Object (
     [id] => 35 
     [user_id] => 46 
     [name] => 
     [tv] => 0.00 
     [tc] => 0.00 
     [tu] => 0.00 
     [cost] => 0.00 
     [kms] => 0 
     [date_s] => 2012-03-30 
     [notes] => 
     [tick_id] => 13 
     [tot_fee] => 3200 
    ) 
    … 
) 
+0

这是可能的。你有没有尝试使用'foreach'来迭代和求和? – Jon 2012-04-04 07:42:38

+0

使用var_export导出数据结构而不是print_r。 TYIA – jpic 2012-04-04 07:45:04

回答

1

很难告诉你的代码中显示的方式,但 这应该是你所需要的:

// Create the cost total array 
$cost = array(); 

// Iterate over each object in the given array 
foreach ($array as $object) 
{ 

    // If the tick_id has not yet been assigned as a key then do so with a default cost of 0 
    if (!isset($cost[$object->tick_id])) 
    { 
    $cost[$object->tick_id] = 0; 
    } 

    // Increment the total cost for the given tick_id 
    $cost[$object->tick_id] += $object->tv + $object->km + $object->tu + $object->cost; 

} 

$cost将是一个数组,其中keytick_idvalue是总成本。

+0

非常感谢,很好的建议,你解决了我所有的问题! :) – user1103633 2012-04-04 21:19:23