Я сравниваю строки со операторами сравнения.
Мне нужно несколько пояснений для двух приведенных ниже сравнений и их результатов.
if('ai' > 'i') { echo 'Yes'; } else { echo 'No'; } output: No
Зачем?
if('ia' > 'i') { echo 'Yes'; } else { echo 'No'; } Output: Yes
Опять же, почему?
Возможно, я забыл некоторые основы, но мне действительно нужно некоторое объяснение этих примеров сравнения.
PHP будет сравнивать альфа-строки, используя операторы сравнения большего и меньшего размера, основанные на алфавитном порядке.
В первом примере ai приходит до i в алфавитном порядке, поэтому проверка> (больше) ложна – раньше в порядке считается «меньше», а не «больше».
Во втором примере ia приходит после i алфавитного порядка, поэтому проверка> (больше) истинна – позже в порядке, который считается «больше».
Чтобы расширить ответ на @ coderabbi:
Это тот же тип логики, что и при заказе по номеру в некоторых приложениях и получения результатов, таких как:
Он не зависит от длины строки, а от каждого символа в порядке строки.
Оператор сравнения <и> в php сравнивает первый символ вашей строки, а затем сравнивает другие символы, которые следуют в строках. Таким образом, ваше первое выражение ai (первая строка) и i (вторая строка) a – это первый символ в строке по сравнению с i в качестве первого символа во второй строке с> будет возвращать false, а затем второй оператор вернет true из-за та же самая причина. Однако, если вам действительно нужно сравнить два более длинных строковых значения со многими символами, вы можете попробовать использовать метод substr_compare:
substr_compare("abcde", "bc", 1, 2);
в этом примере у вас есть две строки для сравнения, 1 – позиция начала смещения, а 2 – количество символов, которое вы хотите сравнить справа от этих строк. -1 означает начало смещения с конца первой строки. например, сделать что-то вроде этого:
substr_compare("string1", "string2", 0, length);
также рассмотрите использование strcmp (), а именно strcmp («string1», «string2», length), где length – количество символов, которое вы хотите сравнить с двумя строками.