多维数组array_sum

Mr *_*ose 17 php arrays array-sum

我已经看到各种关于这个问题的帖子,所以我知道可能存在一些答案.但阅读这些之后,我并不聪明.

我有一个类似如下的数组.

[0] => Array
    (
        [id] => 95659865986
        [invoiceNumber] => 6374324
        [invoiceTitle] => Monthly
        [invoiceStatus] => Paid
        [accountId] => 6235218753
        [totalExVat] => 158.95
        [dateCreated] => 1 Apr 2012
        [vatAmount] => 20.00
    )
Run Code Online (Sandbox Code Playgroud)

我想做的就是vatAmount对这个数组的值进行数组求和.

由于以下似乎没有做太多.

(array_sum($account_invoices['vatAmount'])
Run Code Online (Sandbox Code Playgroud)

Bla*_*nzo 55

如果您有PHP 5.5+,您可以在不循环或使用回调的情况下执行此操作(因为函数调用相对昂贵)...只需使用:

$sum = array_sum(array_column($account_invoices, 'vatAmount'));
Run Code Online (Sandbox Code Playgroud)


Khi*_*ior 26

我会使用array_map将数组减少到只需要的数量.请记住,这只适用于PHP 5.3以上版本.

$total_vat = array_sum( array_map(
                 function($element){
                     return $element['vatAmount'];
                 }, 
             $account_invoices));
Run Code Online (Sandbox Code Playgroud)


mat*_*ias 17

只是一种方法:

$sum = 0;

foreach($account_invoices as $num => $values) {
    $sum += $values[ 'vatAmount' ];
}
Run Code Online (Sandbox Code Playgroud)


xda*_*azz 9

您可以array_map先使用它来收集vatAmout值.

$sum = array_sum(array_map(function($var) {
  return $var['vatAmout'];
}, $account_invoices));
Run Code Online (Sandbox Code Playgroud)