首页 > 解决方案 > 从给定的几个月创​​建一个 12 个月的数组

问题描述

我有这个 PHP 数组:

array(
  [1528840800] => 50  // 12 June 2018 22:00:00
  [1531173600] => 37  // 9 July 2018 22:00:00
  [1540940400] => 44  // 30 October 2018 23:00:00
  [1543532400] => 9   // 29 November 2018 23:00:00
)

如何获得一个完整的 12 个月数组,其中剩余月份的值为零?

  array(
  [01]         => 0
  [02]         => 0
  [03]         => 0
  [04]         => 0
  [05]         => 0
  [1528840800] => 50  // 12 June 2018 22:00:00
  [1531173600] => 37  // 9 July 2018 22:00:00
  [08]         => 0
  [09]         => 0
  [1540940400] => 44  // 30 October 2018 23:00:00
  [1543532400] => 9   // 29 November 2018 23:00:00
  [12]         => 0 

)

这不适用于第二个值的属性..

for ($i=1;$i<13;$i++) {
  foreach ($array as $key => $value) {
    if (date('m',$key)===sprintf('%02d', $i)) {
      $fullmonths[date('d/m/Y',$key)] = $value;
      break;
    }else{
      $fullmonths['XXXX/'.sprintf('%02d', $i).'/2018]=0;
    }
  }
}

非常感谢。

标签: phparrays

解决方案


有点像你已经在做的事情。如果要重新:使用原始数组,只需更改$months$array.

$array = [
  "1528840800" => 50,
  "1531173600" => 37,
  "1540940400" => 44,
  "1543532400" => 9
];
$months = [];

for ($i=1;$i <= 12;$i++) {
    foreach($array as $time => $value) {
        $date = date("n", $time);
        if ($date == $i) {
            $months[$time] = $value;break;
        } else {
            $months[$i] = 0;
        }

    }
}

var_dump($months);

如果您需要对月份进行零填充,只需添加str_pad()到 中[$i],如下所示:

[str_pad($i, 2, "0", STR_PAD_LEFT)]

推荐阅读