获取键值数组中的子数组的总和

时间:2016-11-08 02:54:33

标签: php arrays multidimensional-array

我有一个像这样的多余阵列...

enter image description here

**请注意,该阵列具有右括号,未在此图像中显示。所以语法中没有问题。

我想在每个键中添加值(Openness,Conscientiousness),以便我有一个类似的数组:

      Array{
              [Openness]=> Array(
                    [0] => 16
             )
              [Conscientiousness]=>Array (
                     [0]=> 10
              )
         }

在查看现有问题后,当我尝试使用此代码时:

      $sumArray = array();

    foreach ($finalarr as $k=>$subArray) {
      foreach ($subArray as $id=>$value) {
        //$sumArray[$id]+=$value;
        array_key_exists( $id, $sumArray ) ? $sumArray[$id] += $value :      $sumArray[$id] = $value;
            }
        }

   print_r($sumArray);

我明白了:

enter image description here

这不是我想要的。任何想法如何修复数组?

2 个答案:

答案 0 :(得分:0)

您可以使用array_sum()和一个循环执行此操作:

$sumArray = array();
foreach ($finalarr as $k => $subArray) {
    $sumArray[$k] = array_sum($subArray);
}

如果你真的需要$sumArray的元素是数组而不仅仅是总和,它就变成了:

$sumArray = array();
foreach ($finalarr as $k => $subArray) {
    $sumArray[$k] = array(array_sum($subArray));
}

但我不确定你为什么会这么想。

答案 1 :(得分:0)

好的,正如评论中所建议的那样,我使用了array_sum并且它有效。我把foreach改为:

**删除了不必要的内循环

    foreach ($finalarr as $k=>$subArray) {

        $finalarr[$k]=array_sum($subArray);

}

它给了我输出:

     Array{
          [Openness]=> 16
          [Conscientiousness]=> 10

     }

感谢您的评论!!