对二维数组的单列求和

问题描述 投票:0回答:5

我想对所有[建议]字段值求和。

[
    [
        'Id' => 4,
        'Suggested' => 1322,
        'proximite_r' => 30924.8470655462,
    ],
    [
        'Id' => 7,
        'Suggested' => 773,
        'proximite_r' => 32229.1036975145,
    ],
]

总计应为:

2095

php arrays multidimensional-array sum
5个回答
8
投票

给你,伙计:

array_reduce()
像个老板

// PHP >= 5.3
$sum = array_reduce($items, function($sum, $item){
  return $sum += $item['Suggested'];
}, 0);

// PHP 5.2
function _sum($sum, $item){
  return $sum += $item['Suggested'];
}
$sum = array_reduce($items, '_sum', 0);

可悲的是 PHP <= 5.2 does not support closures, so you have to define the function separately.


6
投票

你可以试试这个:

$Sum = 0;
foreach ($row as $item) {
   $Sum += $item['Suggested']; // or else index
}
echo $Sum;

4
投票
$sum = array_sum(
              array_map(function($item) { return $item["Suggested"]; }, $items)
       );

0
投票

考虑到

array_column
函数可能会在 PHP 5.5 中出现:

function array_column($input, $key) {
    if (is_array($key) || !is_array($input)) return array();
    $array = array();
    foreach($input as $v) {
        if(array_key_exists($key, $v)) $array[]=$v[$key];
    }
    return $array;
}

(来源:php.net)

你可以用这个:

$sum = array_sum(array_column($items, 'Suggested'));

当然,这有点矫枉过正,我只想指出这也是实现它的一种方法。


0
投票

迭代数组的另一种方法是使用 for 循环,假设它是 $arr:

<?php    
function getSumOfKey($arr, $key){
     $sum = 0;
     for ($i = 0; $i < count($arr); $i++){
      (is_numeric($arr[$i][$key]))? $sum += $arr[$i][$key] : continue;
     }
     return $sum;
    } 
?>

实现它:

echo 'The sum is: '.getSumOfKey($arr, 'Suggested');
© www.soinside.com 2019 - 2024. All rights reserved.