Лучший способ определения последнего дня месяца


Исходя из документации функции date мы можем воспользоваться параметром t:

$date = '2018-01-01';
echo date('t', strtotime($date)); // или echo date('Y-m-t', strtotime($date));

Однако на системах, которые ещё не перешли на 64-битную архитектуру расчёт после 2038 года может быть неверен. Однако, в этом случае можно так же воспользоваться и объектом DateTime.

$date = new DateTime('2018-01-01');
echo $date->format('t'); // или echo $date->format('Y-m-t');