Search code examples
phpstringcompareoperatorstype-coercion

How does PHP compare strings with comparison operators?


I'm comparing strings with comparison operators.

I need some sort of explanation for the below two comparisons and their result.

if('ai' > 'i')
{
    echo 'Yes';
}
else
{
    echo 'No';
}

output: No

Why do these output this way?

if('ia' > 'i')
{
    echo 'Yes';
}
else
{
    echo 'No';
}

Output: Yes

Again, why?

Maybe I forgot some basics, but I really need some explanation of these comparison examples to understand this output.


Solution

  • PHP will compare alpha strings using the greater than and less than comparison operators based upon alphabetical order.

    • In the first example, ai comes before i in alphabetical order so the test of > (greater than) is false - earlier in the order is considered 'less than' rather than 'greater than'.

    • In the second example, ia comes after i alphabetical order so the test of > (greater than) is true - later in the order being considered 'greater than'.