2017-03-31 2 views
0

これは私がクエリから取得配列です:和データが

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を省略することができます。

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 
       ) 
) 

私はこのようなsomenthing試してみました: MySQLのクエリ

Array ( 
     [GOLD] => 3850 
     [NORMAL] => 1360 
     [TOTAL] => 5220 
    ) 

このが更新されます:は、データ

//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]; 
      } 
     } 
    } 
    } 
} 

しかし、この時点で、それは一般的にはすべての製品とのデータを集計した配列である

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 

私が説明した例のように配列を準備するデータ? ありがとう!

+0

あなたのMySQLのクエリを表示することができますか? –

+0

私はmysqlクエリ@knowledgeで質問を更新しました.... –

答えて

0
<?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

バラエティを削除したい場合、簡単な方法は設定を解除することです。 if(!key_exists($ item ['PRODUCT']、$ totalByProduct)){ $ totalByProduct [$ item ['PRODUCT']] = $ item; unset($ totalByProduct [$ item ['PRODUCT']] ['VARIETY']); 続行。 } – buzlee

+0

あなたの答えをいただきありがとうございます!グレッティング –

0
$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

あなたの質問に感謝しますが、それは動作しません!あなたが私に説明してくれますか? –

+0

使用方法を示すことができます。 – mohe14

+0

はい私はこれを次のように使いました: '$ sumArray = array(); foreach($ harvest as $ k => $ subArray){ foreach($ subArray as $ id => $ value){ if(is_numeric($ value)){ $ sumArray [$ id] + = $ value ; } } } 'それは私に空を示す –