<?php
say("strcmp(): Returns < 0 if str1 is less than str2;",
" > 0 if str1 is greater than str2, and 0 if they are equal.",
" http://php.net/manual/en/function.strcmp.php");
# basic test
string_lt('a', 'z');
# numeric strings
string_lt('22', '123');
# non-numeric strings
string_lt('bb', 'abc');
# non-numeric strings with numbers in
# should be the same as "numeric strings" if strcmp() really does string comparison
string_lt('22x', '123x');
function string_lt($str1, $str2)
{
# < operator
if ($str1 < $str2) { say("$str1 < $str2"); }
if ($str2 < $str1) { say("$str2 < $str1"); }
# good old strcmp()
if (strcmp($str1, $str2)) { say("$str1 < $str2"); }
if ($str2 < $str1) { say("$str2 < $str1"); }
}
function string_lt_old($str1, $str2)
{
# you can't use < operator for comparing strings
# wacky stuff will happen
$lt_says = ((string) $str1 < (string) $str2);
# see what strcmp() says
$strcmp_says = strcmp($str1, $str2);
echo "$str1 less than $str2; lt_says: $lt_says, strcmp_says: $strcmp_says\n";
}
function say(...$msgs)
{
foreach ($msgs as $msg)
{
echo $msg;
}
echo "\n";
}
strcmp(): Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal. http://php.net/manual/en/function.strcmp.php
a < z
a < z
22 < 123
22 < 123
abc < bb
bb < abc
abc < bb
123x < 22x
22x < 123x
123x < 22x
Output for 8.3.5
Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
strcmp(): Returns < 0 if str1 is less than str2; > 0 if str1 is greater than str2, and 0 if they are equal. http://php.net/manual/en/function.strcmp.php
a < z
a < z
22 < 123
22 < 123
abc < bb
bb < abc
abc < bb
123x < 22x
22x < 123x
123x < 22x
Output for 5.4.0 - 5.4.45, 5.5.0 - 5.5.38
Parse error: syntax error, unexpected '.', expecting '&' or variable (T_VARIABLE) in /in/GfpdE on line 50
Process exited with code 255.