php - 从给定的几个月创建一个 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;
}
}
}
非常感谢。
解决方案
有点像你已经在做的事情。如果要重新:使用原始数组,只需更改$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)]