簡體   English   中英

PHP:從數組中的“行”中獲取所有值

[英]PHP: Get all values from an "row" in an array

我想知道如何獲取數組特定“行”中所有值的總和。

例如,我得到了這個數組:

[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(直到 5.5 才引入array_column ):

$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));

array reduce 獲取一個數組,一個要在該數組上使用的函數,第三個參數是您在第一次調用該函數時使用的初始數組。

我在這里使用了一個數組,因此您可以根據需要對日期(最大值或最小值)進行一些處理。 你當然可以只使用一個int。 然后它看起來更簡單:

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

您可以使用array_sum()array_map()的組合來實現這一點,如下所示:

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

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM