Хорошо. Как насчет этого?
Проверяет, являются ли $ mo и $ mc действительными датами, используя is_numeric
. Любые NULL или ложные значения будут пойманы этим.
Я не проверял это, но оно должно работать.
Я выкладываю это в огромный блок кода. В начале, при изучении языка, это лучший способ понять смысл кода. Это не самое элегантное и не самое короткое решение. Позже вы можете сократить его, удалив пробелы или введя or
и прочее.
Я не уверен на 100% в части сравнения чисел, и у меня нет времени, чтобы проверить это прямо сейчас. Вам нужно будет проверить, работает ли он.
Вам нужно решить, как вы хотите обрабатывать ошибки, и вставить код туда, где находятся мои комментарии. Простой echo
может уже сделать.
// If $mo or $mc are false, show error.
// Else, proceed to checking whether $mo is larger
// than $mc.
if ((!is_numeric($mo)) and (is_numeric($mc)))
{
// Error: $mo is either NULL, or false, or something else, but not a number.
// While $mc IS a number.
}
elseif ((!is_numeric($mc)) and (is_numeric($mo)))
{
// Error: $mc is either NULL, or false, or something else, but not a number.
// While $mo IS a number.
}
else
{
if (($mc <= $mo) and ((is_numeric($mc) or (is_numeric($mo)))))
{
// Error: closing time is before opening time.
}
else
{
// Success!!
}
}