Intereting Posts
Интерполяция переменных PHP и конкатенация Вызов WordPress для неопределенной функции get_header (); php imagejpeg () Не удается открыть, Нет такого файла или каталога или разрешено отклонение Проблемы с Symfony2 config.php: Примечание: неопределенное свойство: stdClass :: $ vendor-dir, отсутствуют библиотеки поставщиков, как их решить? Аутентификация системы без сеансов – Только куки – Является ли это достаточно безопасным? Как установить значение по умолчанию для «Сохранить изображение как» для изображения, сгенерированного в PHP? android в биллинге приложений v3 с php $ _GET и переписывание URL для PHP Отправить параметр на сервер из приложения Android Функция для подсчета числа цифр в строке как запрашивать группу и отличать лимит в MongoDB PHP codeigniter? Как отправить пользователя на наш веб-сайт, если он откажется от приложения Twitter? filter_var с использованием FILTER_VALIDATE_REGEXP как запустить самообновление composer.phar в Travis Новая система PayPal перестала работать с моим кодом

PHP Loop для раскрывающегося года

Я пытаюсь создать вход для выбора HTML, основанный на месяцах / годах, и я не уверен, что для него лучше всего подходит.

Хотя создание стандартного цикла лет было первым местом, которое я начал, я не был уверен, как получить последние дни каждого месяца / года, чтобы создать ценности.

Есть ли встроенные функции PHP, которые могут выполнить что-то близкое к тому, что я ищу?

Логика:

  • Должен быть в состоянии обеспечить начальный год (например, 2014 год).
  • Должен начинаться в начале года и идти через год после текущего года (например, если Start = 2014, он покажет 2014, 2015, 2016.
  • Значение параметра должно быть последним днем ​​месяца в формате даты (например, <option value="01/31/2015">January 2015</option>

Вывод:

 <select class="s2 span4" name="desiredCompletion" placeholder="Select a Desired Completion Date"> <optgroup label="2016"> <option value="01/31/2016">Janurary 2016</option> <option value="02/28/2016">Feburary 2016</option> <option value="03/31/2016">March 2016</option> ... </optgroup> <optgroup label="2015"> <option value="01/31/2015">Janurary 2015</option> <option value="02/28/2015">Feburary 2015</option> <option value="03/31/2015">March 2015</option> ... </optgroup> <optgroup label="2014"> <option value="01/31/2014">Janurary 2014</option> <option value="02/28/2014">Feburary 2014</option> <option value="03/31/2014">March 2014</option> ... </optgroup> </select> 

Эта функция должна:

 function createYearSelect($from) { // open select echo "<select class=\"s2 span4\" name=\"desiredCompletion\" placeholder=\"Select a Desired Completion Date\">"; // for each year from the one specified to the one after current foreach(range($from, date('Y') + 1) as $year) { // open optgroup for year echo "<optgroup label=\"$year\">"; // foreach month foreach (range(1, 12) as $month) { // timestamp of first day $time = strtotime("$year-$month-01"); // create option with date() formatting echo "<option value=\"".date("m/t/Y", $time)."\">".date("FY", $time)."</option>"; } // close optgroup for year echo "</optgroup>"; } // close select echo "</select>"; } 

Вот несколько более элегантный способ

 foreach(range(2014, 2015) as $year){ foreach(range(1, 12) as $month){ echo date('Ymd', strtotime('Last day of ' . date('F', strtotime($year . '-' . $month . '-01')) . $year)) . PHP_EOL; } } 

Это выводит список последних дней месяцев за годы в указанном диапазоне.

 2014.01.31 2014.02.28 2014.03.31 2014.04.30 ... 

Используя класс DateTime вы можете создавать даты с использованием естественного языка.

Например,

 $date = new DateTime("-1 Year"); echo $date->format('F Y'); // Prints 'December 2014' 

Вы можете использовать цикл сокращения for цикла, чтобы создать много дат, возвращающихся во времени.

Проверьте, какая функция ниже, которая дает общее количество дней в месяц

date("t") ;

Более подробную информацию можно найти по адресу http://php.net/manual/en/function.date.php.