php中的Array_sum - 所有值

时间:2014-03-02 13:29:03

标签: php

我想从我的数组中加总所有值 例如

{
  "data": [
    {
      "message_count": 14051
    },
    {
      "message_count": 12731
    },
    {
      "message_count": 7867
    },
    {
      "message_count": 6053
    },
    {
      "message_count": 4
    }
  ]
}

那是我的代码:

<?php
$messages_count = file_get_contents('baza.html');
$json_a=json_decode($messages_count,true);
$counting_base = ($json_a['data']);
echo array_sum($counting_base);
?>

但我仍然得到'0'。有任何想法吗? 非常感谢你

2 个答案:

答案 0 :(得分:4)

这是因为你的数组是二维的。 array_sum()需要一维数组。要使它成为一维的,循环遍历数组,并使用array_sum(),如下所示:

$new = array();
foreach ($json_a['data'] as $key => $innerArr) {
    $new[] = $innerArr['message_count'];
}

echo array_sum($new); // 40706

Online demo

答案 1 :(得分:2)

试试这个:

array_sum(array_column($json_a['data'], 'message_count'));

输出:40706

live demo

<强>替代:

你可以通过循环来完成:

array_sum()

将无法正常工作,因为您没有正确格式化数组(1D数组)。

$sum = 0;
for($i=0; $i<count($counting_base); $i++)
{
    $sum += $counting_base['message_count']; 
}

echo "Total = ". $sum;