2011-10-31 45 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 
)