首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数组中的数据之和按参数php

数组中的数据之和按参数php
EN

Stack Overflow用户
提问于 2017-03-31 14:35:16
回答 2查看 54关注 0票数 0

这是我从查询中得到的数组:

代码语言:javascript
复制
Array ( 
       [0] => Array ( 
                     [0] => Array ( 
                                    [PRODUCT] => ROSE 
                                    [VARIETY] => ADELE 
                                    [GOLD] => 160 
                                    [NORMAL] => 0 
                                    [TOTAL] => 160 
                                  ) 
                     [1] => Array ( 
                                    [PRODUCT] => ROSE
                                    [VARIETY] => ALESSO 
                                    [GOLD] => 1320 
                                    [NORMAL] => 550 
                                    [TOTAL] => 1870 
                                  ) 
                     [2] => Array ( 
                                    [PRODUCT] => ROSE
                                    [VARIETY] => ANASTACIA 
                                    [GOLD] => 440 
                                    [NORMAL] => 150 
                                    [TOTAL] => 590 
                                   )
                     [3] => Array ( 
                                    [PRODUCT] => ROSE1
                                    [VARIETY] => ANASTACIA1 
                                    [GOLD] => 420 
                                    [NORMAL] => 120 
                                    [TOTAL] => 540 
                                   )
                     [4] => Array ( 
                                    [PRODUCT] => ROSE1
                                    [VARIETY] => ANASTACIA1 
                                    [GOLD] => 440 
                                    [NORMAL] => 100 
                                    [TOTAL] => 540 
                                   )
                     [5] => Array ( 
                                    [PRODUCT] => ROSE2
                                    [VARIETY] => ANASTACIA2
                                    [GOLD] => 640 
                                    [NORMAL] => 0 
                                    [TOTAL] => 640 
                                   )
                     [6] => Array ( 
                                    [PRODUCT] => ROSE2
                                    [VARIETY] => ANASTACIA2 
                                    [GOLD] => 440 
                                    [NORMAL] => 440 
                                    [TOTAL] => 880 
                                   )
                    )


     ) 
)

GOLDNORMAL可以是不同的,取决于查询,但是我想用PRODUCT将来自GOLDNORMALTOTAL的总和相加,这样的话,可以省略VARIETY

代码语言:javascript
复制
Array(
      [0] => Array(
                   [PRODUCT] => ROSE
                   [GOLD]    => 1920
                   [NORMAL]  => 700
                   [TOTAL]   => 2620
                  )
      [1] => Array(
                   [PRODUCT] => ROSE1
                   [GOLD]    => 860
                   [NORMAL]  => 220
                   [TOTAL]   => 1080
                  )
      [2] => Array(
                   [PRODUCT] => ROSE2
                   [GOLD]    => 1080
                   [NORMAL]  => 440
                   [TOTAL]   => 1520
                  )
)

我尝试过这样的方法:$harvest是带有数据的数组

代码语言:javascript
复制
//This get the array_keys from the data
$arrayThead = array();
for ($i=0; $i < count($harvest) ; $i++) {
   array_push($arrayThead, array_keys($harvest[$i][0]));
}


$arrayfoot= array();

foreach ($harvest as $key => $value) {
  foreach ($value as $harv) {
     foreach ($arrayThead as $key => $values) {
        foreach ($values as $th) {
           if($th != 'PRODUCT' && $th != 'VARIETY'){
               $arrayfoot[$th] += $harv[$th];
           }
        }
     }
  }
}

但在这一点上,它对所有产品的数据进行了汇总:

代码语言:javascript
复制
Array ( 
        [GOLD] => 3850 
        [NORMAL] => 1360 
        [TOTAL] => 5220 
      )

更新

这是mysql查询:

代码语言:javascript
复制
SELECT pr_products.product AS PRODUCT, 
            pr_varieties.variety AS VARIETY, 
            FORMAT(SUM(IF(pr_grades.grade='GOLD',pf_harvest.quantity,0)),0) AS GOLD, 
            SUM(IF(pr_grades.grade='NORMAL',pf_harvest.quantity,0)) AS NORMAL, 
            SUM(pf_harvest.quantity) AS TOTAL 
FROM pf_harvest 
INNER JOIN pf_performance ON pf_performance.id = pf_harvest.id_performance 
INNER JOIN pr_products ON pr_products.id = pf_harvest.id_product 
INNER JOIN pr_varieties ON pr_varieties.id = pf_harvest.id_variety 
INNER JOIN pr_grades ON pr_grades.id = pf_harvest.id_grade 
WHERE pf_performance.status = 100 
AND pf_harvest.id_tenant = 1 
AND pf_harvest.date = CURDATE() 
GROUP BY pf_harvest.id_product, pf_harvest.id_variety 
ORDER BY pf_harvest.id_product, pr_varieties.variety, pf_harvest.id_grade

我如何添加数据来武装数组,就像我在前面解释的示例中那样?谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-03-31 15:09:09

代码语言:javascript
复制
    <?php
    $array = Array (
        0 => Array (
            0 => Array (
                'PRODUCT' => 'ROSE',
                'VARIETY' => 'ADELE',
                'GOLD' => 160,
                'NORMAL' => 0,
                'TOTAL' => 160
            ),
            1 => Array (
                'PRODUCT' => 'ROSE',
                'VARIETY' => 'ALESSO',
                'GOLD' => 1320,
                'NORMAL' => 550,
                'TOTAL' => 1870
            ),
            2 => Array (
                'PRODUCT' => 'ROSE',
                'VARIETY' => 'ANASTACIA',
                'GOLD' => 440,
                'NORMAL' => 150,
                'TOTAL' => 590
            ),
            3 => Array (
                'PRODUCT' => 'ROSE1',
                'VARIETY' => 'ANASTACIA1',
                'GOLD' => 420,
                'NORMAL' => 120,
                'TOTAL' => 540
            ),
            4 => Array (
                'PRODUCT' => 'ROSE1',
                'VARIETY' => 'ANASTACIA1',
                'GOLD' => 440,
                'NORMAL' => 100,
                'TOTAL' => 540,
            ),
            5 => Array (
                'PRODUCT' => 'ROSE2',
                'VARIETY' => 'ANASTACIA2',
                'GOLD' => 640,
                'NORMAL' => 0,
                'TOTAL' => 640,
            ),
            6 => Array (
                'PRODUCT' => 'ROSE2',
                'VARIETY' => 'ANASTACIA2',
                'GOLD' => 440,
                'NORMAL' => 440,
                'TOTAL' => 880,
            )
        )
    );


    $totalByProduct = array();

    foreach ($array as $items) {
        foreach ($items as $item) {
            if(!key_exists($item['PRODUCT'], $totalByProduct)){
                $totalByProduct[$item['PRODUCT']] = $item;
                continue;
            }
            $totalByProduct[$item['PRODUCT']]['GOLD'] += $item['GOLD'];
            $totalByProduct[$item['PRODUCT']]['NORMAL'] += $item['NORMAL'];
            $totalByProduct[$item['PRODUCT']]['TOTAL'] += $item['TOTAL'];
        }
    }
    var_dump($totalByProduct);
?>
票数 0
EN

Stack Overflow用户

发布于 2017-03-31 14:44:29

代码语言:javascript
复制
$aProductsArray = array(
    array(
            "PRODUCT" => "ROSE",
            "GOLD"    => 1920,
            "NORMAL" => 700, 
            "TOTAL"   => 2620,
        ),
    array(
            "PRODUCT" => "ROSE1", 
            "GOLD"   => 860,
            "NORMAL" => 220, 
            "TOTAL"   => 1080,
        ),
    array(
            "PRODUCT" => "ROSE2",
            "GOLD"    => 1080, 
            "NORMAL"  => 440,
            "TOTAL"   => 1520
        )
);
$sumArray = array();
foreach ($aProductsArray as $k=>$subArray) {
    foreach ($subArray as $id=>$value) {
        if(is_numeric($value)){
            $sumArray[$id]+=$value;
        }
    }
}
print_r($sumArray);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43143337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档