сравнение строк со операторами сравнения php

Я сравниваю строки со операторами сравнения.

Мне нужно несколько пояснений для двух приведенных ниже сравнений и их результатов.

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:

Это тот же тип логики, что и при заказе по номеру в некоторых приложениях и получения результатов, таких как:

  • 0
  • 1
  • 105
  • 11
  • 2
  • 21
  • 3
  • 333
  • 34

Он не зависит от длины строки, а от каждого символа в порядке строки.

Оператор сравнения <и> в 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 – количество символов, которое вы хотите сравнить с двумя строками.