2011-10-31 59 views
0

我有这个数组:如何在PHP中排除元素表单数组的总和?

[Jessica CS] => Array 
    (
     [2011-04-20] => Array 
      (
       [0] => 69.90 
       [cancel] => 1311145200 
       [1] => 29.95 
       [2] => 69.90 
      ) 
    ) 

[Rex CS] => Array 
    (
     [2011-04-20] => Array 
      (
       [0] => 119.94 
       [cancel] => 
      ) 

     [2011-04-26] => Array 
      (
       [0] => 199.50 
       [cancel] => 
       [1] => 29.95 
      ) 
.... 

,我通过使用循环将这些值加在一起:

$i=0; 
foreach($dates as $d){ 
$total[$i] += array_sum($value[$d]); 
#i++; 
} 

这将加在一起的一切,我想要的是被排除[cancel]场加入array_sum

编辑:我或许可以补充一点,是int值,但不知道如何将它们

排序

有什么想法?

感谢

回答

1

个人而言,我会改变阵列的布局,使其去更像是:

[Jessica CS] => Array 
    (
     [2011-04-20] => Array 
      (
       [cancel] => 1311145200 
       [costs] => Array 
        (
         [0] => 69.90 
         [1] => 29.95 
         [2] => 69.90 
        ) 
       ) 
    ) 

更换[费用]以任何名义是最相关的。

与您现有的阵列
通过阵列做不到这一点

$i=0; 
foreach($dates as $d){ 
    $total[$i] += array_sum(array_diff_key($value[$d], array('cancel')); 
    #i++; 
} 
+0

我明白了,但我坚持下去它是这样的方式 – Patrioticcow

+0

好吧,试试我的新解决方案:) –

+0

它不起作用,但我看到你要去哪里,在这个方向更糟的研究也 – Patrioticcow

0

只是循环工作,也许是这样的:

$input = array(
    'Jessica CS' => array(
     '2011-04-20' => array(
      0 => 69.9, 
      'cancel' => 1311145200, 
      1 => 29.95, 
      2 => 69.90, 
     ), 
    ), 
    'Rex CS' => array(
     '2011-04-20' => array(
      0 => 119.94, 
      'cancel' => null, 
     ), 
     '2011-04-26' => array(
      0 => 199.50, 
      'cancel' => null, 
      1 => 29.95, 
     ) 
    ) 
); 

$totals = array(); 

foreach($input as $person => $dates){ 
    $totals[$person] = 0; 
    foreach ($dates as $date => $values) { 
     foreach ($values as $key => $val) { 
      if ($key !== 'cancel') { 
       $totals[$person] += $val; 
      } 
     } 
    } 
} 

print_r($totals) 

产地:

Array 
(
    [Jessica CS] => 169.75 
    [Rex CS] => 349.39 
)