我有这样的日期数组: -
Array
(
[0] => 2016-08-31
[1] => 2016-08-30
[2] => 2016-08-29
[3] => 2016-08-01
[4] => 2016-07-01
[5] => 2016-06-01
[6] => 2016-05-01
[7] => 2016-04-01
[8] => 2016-03-01
[9] => 2016-02-01
[10] => 2016-01-01
)
需要转换为月份名称,例如1月,2月,而不重复月份名称,并存储到另一个数组中以用作JSON对象。
我尝试date("F", strtotime($dates));
但是在12月返回8,而不是8月。
答案 0 :(得分:3)
您必须先使用foreach,然后才能对数据进行json编码。
<?php
$month_value=[];
foreach ($values as $key => $monthval) {
$month_value[] = date('F',strtotime($monthval));
}
$months = array_unique($month_value);
$final_month = json_encode($months); // this output will be a json value
?>
答案 1 :(得分:1)
您需要通过日期并将月份存储在新数组中并应用array_unique
$dates = [
'2016-08-31',
'2016-08-30',
'2016-08-29',
'2016-08-01',
'2016-07-01',
'2016-06-01',
'2016-05-01',
'2016-04-01',
'2016-03-01',
'2016-02-01',
'2016-01-01',
];
$months = [];
foreach($dates as $date) {
$months[] = date('F', strtotime($date));
}
$months = array_unique($months);
var_dump($months);
答案 2 :(得分:0)
在数组变量 $ months_list 中存储唯一月份。
方法1 :只有在 $ months_list 数组中找不到它,我们才会循环显示每个日期,计算月份并追加月份。< / p>
试试这个:
$months_list = [];
foreach($dates as $date) {
$month = date('F', strtotime($date));
if (!in_array($month, $months_list)) {
$months_list[] = $month;
}
}
方法2 :使用array_map()应用回调函数,并将每个日期转换为月份名称。然后,我们可以应用array_unique()函数来选择唯一的月份名称。
$months_list = array_map(function($date){
return date('F', strtotime($date));
}, $dates);
$months_list = array_unique($months_list);
答案 3 :(得分:0)
有一种方法:你可以使用jdmonthname(...)。 这是一个代码:
$dates = Array(
'2016-08-31',
'2016-08-30',
'2016-08-29',
'2016-08-01',
'2016-07-01',
'2016-06-01',
'2016-05-01',
'2016-04-01',
'2016-03-01',
'2016-02-01',
'2016-01-01'
);
foreach ($dates as $value) {
$date = explode('-', $value);
$year = intval($date[0]);
$month = intval($date[1]);
$day = intval($date[2]);
$jd = gregoriantojd($month, $day, $year);
echo jdmonthname($jd, 1) . '<br />';
}