我想知道如何獲得數組的特定「行」中所有值的總和。PHP:獲取數組中的「行」的所有值
我得到這個數組例如:
[0] {array("date" => "2015-01-01", "value" => 5) }
[1] {array("date" => "2015-01-02", "value" => -3) }
...
現在我想獲得這個陣列中的所有「值」的總和 - 在這種情況下,將2.
我怎麼能在PHP中執行此操作?
我想知道如何獲得數組的特定「行」中所有值的總和。PHP:獲取數組中的「行」的所有值
我得到這個數組例如:
[0] {array("date" => "2015-01-01", "value" => 5) }
[1] {array("date" => "2015-01-02", "value" => -3) }
...
現在我想獲得這個陣列中的所有「值」的總和 - 在這種情況下,將2.
我怎麼能在PHP中執行此操作?
我想說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
方法反正(因爲它沒有通話功能,但依靠語言結構)
:我不介意,如果你能解釋你爲什麼倒票的話。如果需要,我會修改我的答案 –
有這個特定功能: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);
您可以簡單地使用'$ result + = $ item ['value']; ' –
事實上,你可以,沒有太大的差別單向或其他方式 – Nanne
'array_reduce'的最佳使用確實是+1 –
您可以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
)
);
到目前爲止你已經嘗試過。發佈您的嘗試 –
'array_sum(array_column($ array,'value'));' – splash58
WI ............................. ....'array_sum'我不是在開玩笑地向任何人推薦 – Hearner