PHP's documentation on this function is a bit sparse and I have read that this function compares ASCII values so...
echo strcmp('hello', 'hello');
//outputs 0 as expected - strings are equal.
echo '<hr />';
echo strcmp('Hello', 'hello');
//outputs -32, a negative number is expected as
//uppercase H has a lower ASCII value than lowercase h.
echo '<hr />';
echo strcmp('60', '100');
//outputs 5.
The last example is confusing me. I don't understand why it is outputting a positive number.
ASCII Value of 6 = 54
Total ASCII value of '60' = (54 + 48) = 102
The strcmp() functions is saying that '60' is "greater" than '100' even though it seems that the ASCII value and string length of '100' is greater than '60'
Can anyone explain why?
Thanks
Return Values ¶ Returns < 0 if string1 is less than string2 ; > 0 if string1 is greater than string2 , and 0 if they are equal.
Echo simply outputs the strings that it is given, if viewing in the browser it will output the strings to the browser, if it's through command line then it will output the strings to the command line.
strcmp()
returns the difference of the first non-matching character between the strings.
6
- 1
is 5.
When you look at it, you are probably not seeing the characters or digits—just the numbers
Because strcmp()
stops at the first difference it finds. Hence the difference between the ASCII value of '1' and the ASCII value of '6'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With