2016-06-08 7 views
0

Ich habe dieses Array in $ resultPHP Summenwert in mehrdimensionalen Arrays pro Stunde

Array 
(
[0] => Array 
    (
     [0] => Array 
      (
       [buysell] => 270 
       [extracthour] => 13 
       [date] => 2016-06-06 13:15:00 
      ) 

     [1] => Array 
      (
       [buysell] => 7080 
       [extracthour] => 14 
       [date] => 2016-06-06 14:00:00 
      ) 

     [2] => Array 
      (
       [buysell] => 1680 
       [extracthour] => 15 
       [date] => 2016-06-06 15:00:00 
      ) 

     [3] => Array 
      (
       [buysell] => 840 
       [extracthour] => 16 
       [date] => 2016-06-06 16:00:00 
      ) 

     [4] => Array 
      (
       [buysell] => 1320 
       [extracthour] => 17 
       [date] => 2016-06-06 17:00:00 
      ) 

    ) 

[1] => Array 
    (
     [0] => Array 
      (
       [buysell] => 240 
       [extracthour] => 0 
       [date] => 2016-06-07 00:00:00 
      ) 

     [1] => Array 
      (
       [buysell] => 240 
       [extracthour] => 2 
       [date] => 2016-06-07 02:00:00 
      ) 

     [2] => Array 
      (
       [buysell] => 480 
       [extracthour] => 4 
       [date] => 2016-06-07 04:15:00 
      ) 

     [3] => Array 
      (
       [buysell] => 240 
       [extracthour] => 5 
       [date] => 2016-06-07 05:00:00 
      ) 

     [4] => Array 
      (
       [buysell] => 360 
       [extracthour] => 7 
       [date] => 2016-06-07 07:00:00 
      ) 

und so weiter! i die Werte in einer Variablen als Array so etwas wie dieses

Array 
(
[0] => array 
     (
      [buysell] => (sum of all values in the same extracthour) 
      [extracthour] => 1 

eingegeben werden soll und so weiter, bis ich den buysell Wert jeder einzelnen Stunde von diesen Tagen. kann jemand erklären, wie man das löst?

+1

So ein einzelnes Array benötigen, was Sie versucht haben? –

Antwort

0

Angenommen, Sie müssen wie unten eine Ausgabe von Eingang zu erhalten: -

Input: -

$arr = array 
    ( 
    "0" => array 
     (
      "0" => array 
       (
        "buysell" => "270", 
        "extracthour" => "13", 
        "date" => "2016-06-06 13:15:00" 
       ), 
      "1" => array 
       (
        "buysell" => "7080", 
        "extracthour" => "13", 
        "date" => "2016-06-06 14:00:00" 
       ), 
      "2" => array 
       (
        "buysell" => "1680", 
        "extracthour" => "2", 
        "date" => "2016-06-06 15:00:00" 
       ) 
     ), 
    "1" => array 
     (
      "0" => array 
       (
        "buysell" => 240, 
        "extracthour" => 0, 
        "date" => "2016-06-07 00:00:00" 
       ), 

      "1" => array 
       (
        "buysell" => 240, 
        "extracthour" => 2, 
        "date" => "2016-06-07 02:00:00" 
       ), 

      "2" => array 
       (
        "buysell" => 480, 
        "extracthour" => 2, 
        "date" => "2016-06-07 04:15:00" 
       ) 
     ), 
    ); 

Ausgang: -

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [buysell] => 7350 
        [extracthour] => 13 
       ) 

      [1] => Array 
       (
        [buysell] => 1680 
        [extracthour] => 2 
       ) 

     ) 

    [1] => Array 
     (
      [0] => Array 
       (
        [buysell] => 240 
        [extracthour] => 0 
       ) 

      [1] => Array 
       (
        [buysell] => 720 
        [extracthour] => 2 
       ) 
     ) 
) 

Code:

$outputArr = array(); 
foreach($arr AS $key => $dataArr) { 
    foreach ($dataArr AS $eachArr) { 
     $outputArr[$key][$eachArr['extracthour']]['buysell'] += $eachArr['buysell']; 
     $outputArr[$key][$eachArr['extracthour']]['extracthour'] = $eachArr['extracthour']; 
    } 
    $outputArr[$key] = array_values($outputArr[$key]); 

} 

Multi Dimension entfernen, wenn Sie

$outputArr[$eachArr['extracthour']]['buysell'] += $eachArr['buysell']; 
$outputArr[$eachArr['extracthour']]['extracthour'] = $eachArr['extracthour']; 
0

Dies könnte Ihnen helfen:

function sumBuySells(array $data) { 
    $sums = array(); 
    foreach($data as $day) { 
     foreach($day as $hourRow) { 
      if (!array_key_exists($hourRow['extracthour'], $sums)) { 
       $sums[$hourRow['extracthour']] = 0; 
      } 
      $sums[$hourRow['extracthour']] += $hourRow['buysell']; 
     } 
    } 
    $result = array(); 
    foreach($sums as $extracthour => $buysell) { 
     $result[] = ['buysell' => $buysell, 'extracthour' = $extracthour]; 
    } 
    return $result; 
} 
0

Angenommen, Ihre gesamte Array ist in der Variablen $new. Bitte Code unten finden. Hoffe das hilft.

Eingang:

Array 
(
    [0] => Array 
     (
      [0] => Array 
       (
        [buysell] => 270 
        [extracthour] => 13 
        [date] => 2016-06-06 13:15:00 
       ) 

      [1] => Array 
       (
        [buysell] => 7080 
        [extracthour] => 14 
        [date] => 2016-06-06 14:00:00 
       ) 

     ) 

    [1] => Array 
     (
      [0] => Array 
       (
        [buysell] => 240 
        [extracthour] => 0 
        [date] => 2016-06-07 00:00:00 
       ) 

      [1] => Array 
       (
        [buysell] => 240 
        [extracthour] => 2 
        [date] => 2016-06-07 02:00:00 
       ) 

     ) 

) 

Code:

$new = array(); 

$c = 1; 

for($i=0;$i<count($a);$i++) 
{ 
    $sum =0; 

    for($k=0;$k<count($a[$i]);$k++) 
    { 
     $sum = $sum + $a[$i][$k]['buysell']; 

    } 
    $new[$i]['buysell'] = $sum; 

    $new[$i]['extracthour'] = $c; 

    $c++; 
} 

echo "<pre>"; 
print_r($new); 

Ausgang:

Array 
(
    [0] => Array 
     (
      [buysell] => 7350 
      [extracthour] => 1 
     ) 

    [1] => Array 
     (
      [buysell] => 480 
      [extracthour] => 2 
     ) 

) 
Verwandte Themen