Почему в PHP выполняется сравнение меньше или больше чем две строки в формате даты «ГГГГ-ММ-ДД», даже если они являются строками?

Я работаю над разделом кода PHP для проекта, который сравнивает дату в формате ГГГГ-ММ-ДД с текущей датой, чтобы узнать, меньше ли она текущей даты. В разных точках кода для сравнения использовались два разных метода. Первый использовалget_timestamp() на даты и провел сравнение от отметок времени. В другом месте он просто сравнил строку даты с выводом изdate("Y-m-d"), Я ожидал, что сравнение двух строк дат не даст правильного ответа. Однако, когда я настроил несколько тестов, я получил ожидаемый результат. Я рассмотрел две части руководства по PHP для понимания, и я все еще не понимаю, почему сравнение работает без преобразования во временную метку.

операторы сравнения В разделе руководства по PHP говорится, что строки либо преобразуются в числа, и затем производится числовое сравнение, либо что-то, что называется лексическим сравнением. Я не могбольше ничего не могу найти в лексических сравнениях, но когда я читаю опреобразование строки в числа и попробовал примеры с использованием строк даты, я получаю один и тот же числовой вывод для каждой строки даты, которую я пытаюсь.

Может ли кто-нибудь помочь мне понять, почему сравнение двух строк даты больше или меньше чем работает (или, по крайней мере, кажется, работает)? Что мне не хватает?

В качестве продолжения, если это действительно работает, я предполагаю, что лучше преобразовать дату в метку времени и выполнить сравнение на основе метки времени. Какую функцию лучше использовать для преобразования даты в метку времени:get_timestamp() или же ?strtotime()

Пример кода меньше / больше чем сравнение двух строк YYYY-MM-DD:

if ("2013-06-27" < "2013-06-28") { echo "less"; } // Output: less
if ("2013-06-27" > "2013-06-28") { echo "more"; } // Output: (none)

if ("2013-06-29" < "2013-06-28") { echo "less"; } // Output: (none)
if ("2013-06-29" > "2013-06-28") { echo "more"; } // Output: more

Пример кода, проверяющий числовое значение преобразованной строки YYYY-MM-DD "

$foo = 1 + "2013-06-27";
echo "\$foo==$foo"; // Output: $foo = 2014
$foo = 1 + "2013-06-28";
echo "\$foo==$foo"; // Output: $foo = 2014
$foo = 1 + "2013-06-29";
echo "\$foo==$foo"; // Output: $foo = 2014

Ответы на вопрос(2)

Ваш ответ на вопрос