2015-08-28 60 views
-1

我想知道如何獲得數組的特定「行」中所有值的總和。PHP:獲取數組中的「行」的所有值

我得到這個數組例如:

[0] {array("date" => "2015-01-01", "value" => 5) } 
[1] {array("date" => "2015-01-02", "value" => -3) } 
... 

現在我想獲得這個陣列中的所有「值」的總和 - 在這種情況下,將2.

我怎麼能在PHP中執行此操作?

+0

到目前爲止你已經嘗試過。發佈您的嘗試 –

+0

'array_sum(array_column($ array,'value'));' – splash58

+0

WI ............................. ....'array_sum'我不是在開玩笑地向任何人推薦 – Hearner

回答

1

我想說array_column適合這種描述很好,不是嗎?

$values = array_column($array, 'value'); 
var_dump($values); 

而恰當地命名爲array_sum將完成這一切了很好

$sum = array_sum($values); 

如果你仍然在PHP5.4(array_column沒有出臺,直到5.5):

$sum = 0; 
foreach ($array as $sub) 
{ 
    $sum += $sub['value']; 
} 

會做得很好。它可能會跑贏array_column + array_sum方法反正(因爲它沒有通話功能,但依靠語言結構)

+0

:我不介意,如果你能解釋你爲什麼倒票的話。如果需要,我會修改我的答案 –

1

有這個特定功能:array_reduce

<?php 
$array = array(array('date'=>'', value=>5),array('date'=>'', value=>-3)); 

$t = array_reduce($array, function($result, $item){ 
    $result['value'] = $result['value'] + $item['value']; 
    return $result; 
}, array('value'=>0)); 

陣列減少得到一個數組,在該數組上使用的函數,第三個參數是在函數的第一次調用時使用的初始數組。

我在這裏使用了一個數組,所以你可以,如果你想,也可以做一些日期(最大或最小)。你當然可以使用int。然後,它看起來simpeler:

$t = array_reduce($array, function($result, $item){ 
    $result = $result + $item['value']; 
    return $result; 
}, 0); 
+0

您可以簡單地使用'$ result + = $ item ['value']; ' –

+0

事實上,你可以,沒有太大的差別單向或其他方式 – Nanne

+0

'array_reduce'的最佳使用確實是+1 –

0

您可以array_map()array_sum()的組合,像這樣實現這一點:

$sum = array_sum(
    array_column(
     $originalArray, 
     'value' 
    ) 
); 

如果您使用的是舊版本的PHP(< 5.5.0),那麼你可以使用以下內容:

$sum = array_sum(
    array_map(
     function($arr) { 
      return $arr['value']; 
     }, 
     $originalArray 
    ) 
);