Создание выпадающего списка месяцев и годов с помощью PHP

Бывают случаи, когда нужно динамически создать выпадающие списки с месяцем и годом с помощью PHP и select. Я использовал этот код во многих своих проектах. И в этой статье я поделюсь ним с вами.

Создание выпадающего списка годов

Создать выпадающий список годов чрезвычайно просто. Задайте первое и последнее значение диапазона, и наш массив готов. Теперь просто переберите его через цикл:

<?php
// устанавливаем первый и последний год диапазона
$yearArray = range(2000, 2050);
?>
<!-- выводим выпадающий список -->
<select name="year">
    <option value="">Выберите год</option>
    <?php
    foreach ($yearArray as $year) {
        // если вы хотите выбрать конкретный год
        $selected = ($year == 2015) ? 'selected' : '';
        echo '<option '.$selected.' value="'.$year.'">'.$year.'</option>';
    }
    ?>
</select>

Создание выпадающего списка месяцев

Существуют два способа, с помощью которых можно создать PHP выпадающий список select с месяцами. В первом мы определяем переменную массива PHP со списком всех месяцев и обрабатываем ее через цикл, и выводим выпадающее меню. Код следующий:

<?php
// устанавливаем массив месяцев
$formattedMonthArray = array(
                    "1" => "January", "2" => "February", "3" => "March", "4" => "April",
                    "5" => "May", "6" => "June", "7" => "July", "8" => "August",
                    "9" => "September", "10" => "October", "11" => "November", "12" => "December",
                );
?>
<!-- выводим выпадающий список -->
<select name="month">
    <option value="">Выберите месяц</option>
    <?php
    foreach ($monthArray as $month) {
        // если вы хотите выбрать конкретный месяц
        $selected = ($month == 5) ? 'selected' : '';
        // если вы хотите добавить перед номером месяца дополнительный 0, раскомментируйте строку ниже
        //$month = str_pad($month, 2, "0", STR_PAD_LEFT);
        echo '<option '.$selected.' value="'.$month.'">'.$formattedMonthArray[$month].'</option>';
    }
    ?>
</select>

Другой способ немного сложнее, поскольку в нем используется функция PHP, а не статический массив месяцев:

<?php
$monthArray = range(1, 12);
?>
<select name="month">
    <option value="">Выберите месяц</option>
    <?php
    foreach ($monthArray as $month) {
        // добавление дополнительного ноля
        $monthPadding = str_pad($month, 2, "0", STR_PAD_LEFT);
        // вы можете использовать любой год, который захотите
        // вы можете использовать 'M' или 'F' в качестве предпочтительного формата
        $fdate = date("F", strtotime("2015-$monthPadding-01"));
        echo '<option value="'.$monthPadding.'">'.$fdate.'</option>';
    }
    ?>
</select>

Если у вас есть предложения по оптимизации кода PHP select, напишите об этом в комментариях.

Вадим Дворниковавтор-переводчик статьи «Create month and year dropdown list using php»