Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何求这个数组的和?_Php_Arrays_Sum - Fatal编程技术网

Php 如何求这个数组的和?

Php 如何求这个数组的和?,php,arrays,sum,Php,Arrays,Sum,我想把所有[建议的]字段加起来。 请问我怎么做? 我使用Php Array ( [0] => Array ( [Id] => 4 [Suggested] => 1322 [proximite_r] => 30924.8470655462 ) [1] => Array ( [Id] => 7

我想把所有[建议的]字段加起来。 请问我怎么做? 我使用Php

Array
(
    [0] => Array
        (
            [Id] => 4
            [Suggested] => 1322
            [proximite_r] => 30924.8470655462
        )

    [1] => Array
        (
            [Id] => 7
            [Suggested] => 773
            [proximite_r] => 32229.1036975145
        )
)
谢谢

您可以尝试以下方法:

$sum = array_sum(
              array_map(function($item) { return $item["Suggested"]; }, $items)
       );
$Sum = 0;
foreach ($row as $item) {
   $Sum += $item['Suggested']; // or else index
}
echo $Sum;
给你,伙计:像个老板

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

不幸的是,PHP给出了可能在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'));

当然,这是一种严重的过度杀伤力,我只想指出这也是实现它的一种方法。

另一种迭代数组的方法是使用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;
    } 
?>

你能重新格式化你的数组使其更可读吗?我认为你最外层的结构不清楚。在“根”级别有多个数组。这是一个数组数组吗?查找一个名为
array\u column
的函数,然后是@汤姆范德沃德:这有什么过火的地方?过火同意;需要在集合中迭代两次。我的回答中描述的一个简单的
数组\u reduce()
就足够了。速度可能更快,但这段代码是独立的。在web应用程序内部,它几乎不会成为瓶颈,特别是在任何磁盘使用或数据库访问的情况下;修复。@FrancoisM,您可能正在运行PHP<5.3。我会记下来的。@FrancoisM,我加了一个PHP@webnoob,这太过分了,是的。然而,这是实现它的一种方式,这就是我指出它的原因。我认为这一点也不过分。
<?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');