checkdate не работает правильно, когда заданы переменные вместо литералов - PullRequest
0 голосов
/ 28 февраля 2020

Следующий код:

$date = "1-1-2021";
list($year, $month, $day) = explode("-", $date);
$check = checkdate($month, $year, $date);
echo "$check";

Не выводит ничего. Когда я пытаюсь запустить этот скрипт вместо вывода true / false, он просто ничего не выводит. Где как:

$check2 = checkdate(1, 1, 2021);
echo "$check2";

Выходы 1, что, если я не ошибаюсь, означает false. Поэтому ввод данных во втором блоке кода также неверен.

Что я здесь не так делаю? Почему первый ничего не выводит, а второй выводит ложь?

Редактировать: Кажется, что на самом деле 1 верно. Поэтому второй блок дает ожидаемый результат; Поэтому меня убеждают, что что-то не так с $year, $month или $day, но, поскольку они содержат значения 2021, 1 и 1, я изо всех сил пытаюсь увидеть проблему здесь.

1 Ответ

1 голос
/ 28 февраля 2020
$date = "1-1-2021";
list($day,$month,$year) = explode("-", $date);
$check = checkdate($month, $day, $year);
echo "$check";

Функция PHP list () сгенерирует массив на основе результата explode (). Первая позиция массива - это день, вторая позиция - месяц, а третья позиция - год. Таким образом, список выглядит следующим образом: list ($ day, $ month, $ year) = explode ("-", $ date);

Чтобы проверить, является ли это действительной датой, с помощью функции checkdate () вы должен пройти месяц в первой позиции, день во второй позиции и год в третьей позиции.

Вы получите ответ: 0 = недействительная дата 1 = действительная дата

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...