2016-08-31 2 views
0

У меня есть массив дат, как это: -Преобразовать массив дат в название месяца

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 
) 

нужно преобразовать в название месяца, как январь, февраль, не повторяя название месяца, и хранить в другой массив для использования в качестве Объект JSON.

Я пробовал date("F", strtotime($dates));, но возвращался в декабре на 8, а не на август.

+0

вам необходимо преобразовать один за другим для всех или сразу вам это нужно –

+0

сразу и хранить его в другом массиве – Vikas

+0

условии и вывода братан. Будет полезно –

ответ

3

Вы должны использовать Еогеасп после того, что вы можете 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 
?> 
+0

Где '$ values' - это ваш массив, содержащий даты. –

+0

Спасибо, отлично работал с массивом array_unique с этим – Vikas

+0

Я упомянул в своем ответе array_unique bro ... –

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); 
+0

Спасибо, да нужно использовать array_unique @kamal pal – Vikas

0

магазин уникальных месяцев в переменной массива $ months_list.

подход 1: Мы пробегаем по каждой дате, вычисляя месяц и прилагая месяц, только если он не найден в $ months_list массива .

Попробуйте это:

$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); 
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 />'; 
    } 
Смежные вопросы