2016-12-01 2 views
1

haben eine Reihewie Summe von multidiamesional Array erhalten

$consumption = array(
    'MONDAY' => array(
       'REFRIGERATOR' => array(3, 9, 7), 
       'WASHINGMACHINE' => array(2, 4, 2, 8) 
      ), 
    'TUESDAY' => array(
       'REFRIGERATOR' => array(5, 3, 8), 
       'OVEN' => array(4, 1, 4) 
      ), 
    'WEDNESDAY' => array(
       'TV' => array(6, 9), 
       'REFRIGERATOR' => array(2, 3, 5, 2) 
       ), 
    'THURSDAY' => array(
       'TV' => array(5, 3, 3, 2), 
       'FAN' => array(4, 9, 8, 5) 
       ), 
    'FRIDAY' => array(
       'WASHINGMACHINE' => array(8, 5), 
       'OVEN' => array(3, 9, 7) 
       ) 
); 

Sie möchten die Ausgabe erhalten:

$sum= Array ([REFRIGERATOR] => 47, [WASHINGMACHINE] => 29 ,[OVEN] => 28, [TV] => 28, [FAN] => 26); 

Antwort

4

Sie suchen speichern jede dieser auf einem Schlüssel und erhöhen die Gesamt im Array. Iteration durch jeden der Einträge, und gehen von dort aus:

$sums = array(); 
foreach ($consumption as $day=>$products) { 
    foreach ($products as $product=>$sales) { 
     if (!isset($sums[$product])) { 
      $sums[$product] = 0; 
     } 
     $sums[$product] += array_sum($sales); 
    } 
} 
+0

Dieser undefinierten Index werfen. :) –

+0

Wie von @ L.Herrera erwähnt, wird dies einen undefinierten Indexfehler auslösen. – Ronald

+0

Aktualisiert, um das erwähnte undefinierte Indexproblem zu beheben. –

3

Prüfung das Ergebnis here

<?php 
    $consumption = array('MONDAY' => array('REFRIGERATOR' => array(3, 9, 7), 'WASHINGMACHINE' => array(2, 4, 2, 8)), 'TUESDAY' => array('REFRIGERATOR' => array(5, 3, 8), 'OVEN' => array(4, 1, 4)), 'WEDNESDAY' => array('TV' => array(6, 9), 'REFRIGERATOR' => array(2, 3, 5, 2)), 'THURSDAY' => array('TV' => array(5, 3, 3, 2), 'FAN' => array(4, 9, 8, 5)), 'FRIDAY' => array('WASHINGMACHINE' => array(8, 5), 'OVEN' => array(3, 9, 7))); 

    $result = []; 
    foreach($consumption as $dayCon) 
    { 
     array_walk($dayCon, function($value, $key) use(&$result) 
     { 
    if(!isset($result[$key])) 
     $result[$key] = 0; 

     $result[$key] += array_sum($value); 
     }); 
    } 
    echo json_encode($result); 
+0

Dies wird undefinierten Index werfen. :) –

+0

@ L.Herrera Ich möchte wirklich wissen, wie Sie es verwenden, haben Sie die Demo überprüfen, läuft es gut –

+0

Es läuft gut auf eval.in aber nicht auf dem eigentlichen Interpreter :) –

Verwandte Themen