【问题标题】:How to sum and count specific keys in a multidimensional array [duplicate]如何对多维数组中的特定键求和和计数[重复]
【发布时间】:2018-02-09 12:46:00
【问题描述】:

我有以下集合,其中包含以下数组:

  #items: array:2 [▼
    0 => array:13 [▼

      "label" => "00000000-N/A"
      "views" => 980
      "clicks" => 444
      "form_submissions_perc" => "100.0"

    ]
    1 => array:13 [▼

      "label" => "1111-N/A"
      "views" => 323
      "clicks" => 1009
      "form_submissions_perc" => "100.0"

    ]
  ]

我正在尝试汇总点击次数和平均观看次数,但在尝试中我得到了错误的数据:

   $sum = 0;

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

        foreach ($subArray as $id => $value) {

            $sum += $subArray['views'];
        }

    }

    dd($sum);

这是我的尝试总结,但没有得到正确的结果

期望的输出

   array:2 [

       "views"=> 1303,
       "clicks"=> 1451

    ]

【问题讨论】:

  • 这些数组中没有total_income 键...
  • "views"=> array_sum(array_column($data, 'views')),

标签: php arrays


【解决方案1】:

使用$sum作为数组,得到正确的多数组值:

$sum = array(
       'clicks' => 0,
       'views' => 0
       );

foreach ($data as $id => $value) {
    $sum['clicks'] += $value['clicks'];
    $sum['views'] += $value['views'];
}

dd($sum);

【讨论】:

    【解决方案2】:
       foreach ($data as $k => $subArray) {
            $valueSum[] = $subArray['views'];
            $clickSum[] = $subArray['clicks'];
        }
        echo array_sum($valueSum);
        echo array_sum($clickSum);
    

    这也是一种简洁明了的方法。

    【讨论】:

      【解决方案3】:

      您可以改用array_reduce

      $data = array_reduce($array, function ($old, $new) {
          return [
              "view" => $old["view"] + $new["view"],
              "clicks" => $old["clicks"] + $new["clicks"]
          ];
      }, ["view" => 0, "clicks" => 0]);
      
      print '<pre>';
      print_r($data);
      

      【讨论】:

        【解决方案4】:
        $data = [
                    [
                        "label"                 => "00000000-N/A",
                        "views"                 => 980,
                        "clicks"                => 444,
                        "form_submissions_perc" => "100.0"
                    ],
                    [
                        "label"                 => "1111-N/A",
                        "views"                 => 323,
                        "clicks"                => 1009,
                        "form_submissions_perc" => "100.0"
                    ]
                ];
        
                $result['views']  = array_sum( array_column( $data, 'views' ) );
                $result['clicks'] = array_sum( array_column( $data, 'clicks' ) );
        
                dd( $result );
        

        这是完成工作的最简单方法。

        结果:

        Array ( [views] => 1303 [clicks] => 1453 )
        

        【讨论】:

          猜你喜欢
          • 2019-09-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-02-05
          • 2013-04-10
          • 1970-01-01
          • 2020-01-26
          • 2019-04-13
          相关资源
          最近更新 更多