как показать показ активного и неактивного месяца из заданного массива дат

мне нужно php функция, которая показывает активный и неактивный месяц.

Мой массив:

$dates = array('2014-08','2014-09','2014-11','2014-12','2015-02',)

ожидаемый результат:

2014-08 Active
2014-09 Active
2014-10 Inactive
2014-11 Active
2014-12 Active
2015-01 Inactive
2015-02  Active

2

Решение

Это должно работать для вас:

<?php

$dates = array('2014-08', '2014-09', '2014-11', '2014-12', '2015-02');
$begin = new DateTime($dates[0]);
$end = new DateTime(end($dates) . "+1 month");
$interval = new DateInterval('P1M');
$daterange = new DatePeriod($begin, $interval ,$end);

foreach($daterange as $date)
echo $date->format("Y-m") . (in_array($date->format("Y-m") , $dates) ? " active" : " inactive") . "<br />";?>

Выход:

2014-08 active
2014-09 active
2014-10 inactive
2014-11 active
2014-12 active
2015-01 inactive
2015-02 active
0

Другие решения

я считаю это решение сработало

ссылка https://gist.github.com/anonymous/c1dc49c23ddc0813a156/42dc128b9cfaf04675c5fd8c6d267b6c507f34cf

0

Попробуйте этот код: ССЫЛКА

<?php
$dates = array('2014-08', '2014-09', '2014-11', '2014-12', '2015-02');
$begin = new DateTime( '2014-08' );
$end = new DateTime( '2015-02' );
$end = $end->modify( '+1month' );

$interval = new DateInterval('P1M');
$daterange = new DatePeriod($begin, $interval ,$end);

foreach($daterange as $date){
if(in_array($date->format("Y-m") , $dates)){
echo $date->format("Y-m") . "Active"."<br>";
}else{
echo $date->format("Y-m") . "Inactive"."<br>";
}
}?>
0