簡體   English   中英

在php中重新組合和求和數組

[英]Regroup and sum array in php

我從我的數據庫中收集開始和結束日期。 我使用一個函數來確定每天的價值。

$array = array();
       foreach ($db_value as $key => $value) {

      $Variable1 = strtotime($Date1);
      $Variable2 = strtotime($Date2);

      for ($currentDate = $Variable1; $currentDate <= $Variable2;
                                      $currentDate += (86400)) {

      $Store = date('Y-m-d', $currentDate);
      $array[] = array( $Store,
       $value->Value2);
      }

      $result = array_merge($array);
    }

這給出了輸出:

 0 => array:2 [▼
    0 => "2019-11-24"
    1 => "4"
  ]
  1 => array:2 [▼
    0 => "2019-11-24"
    1 => "10"
  ]

但是,我想以這樣的方式塑造數組,即每天獲得第二個字段的總和而沒有重復。 喜歡:

 0 => array:2 [▼
    0 => "2019-11-24"
    1 => "14"
  ]

但是,我不能再進一步了。

您可以將日期作為鍵,如果日期相同,則將索引1相加。

$result = [];
foreach($array as $v){
    if(isset($result[$v[0]])){
        $result[$v[0]][1] += $v[1];
    }else{
        $result[$v[0]] = $v;
    }
}
$result = array_values($result);

我不遵循您以前的邏輯,因此也許您可以在迭代數據庫結果時進行總結,但考慮到您的輸出:

<?php

$dates =
[
    [
        '2009-11-24',
        2
    ],
    [
        '2009-11-24',
        5
    ]
];

foreach($dates as $date) {
    $result[$date[0]][] = $date[1];
}
$result = array_map('array_sum', $result);
$result = array_map(null, array_keys($result), $result);

var_export($result);

輸出:

array (
  0 => 
  array (
    0 => '2009-11-24',
    1 => 7,
  ),
)

第一個 foreach 結果如下:

array(1) {
    ["2009-11-24"]=>
    array(2) {
      [0]=>
      int(2)
      [1]=>
      int(5)
    }
  }

然后 array_map 和 array_sum 結果如下:

  array(1) {
    ["2009-11-24"]=>
    int(7)
  }

最后一個 array_map 重新調整為原始格式,一個數組數組,其中包含日期以及每個數組的第一個和第二個索引的總和值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM