3v4l.org

run code in 300+ PHP versions simultaneously
<?php $var11 = '12345'; $var12 = '22b'; $var13 = '12345x'; $var14 = '22'; $var15 = 12345; $var16 = 22; $var17 = '22c'; $var18 = '22a'; $var19 = '12345m'; $var20 = '12345z'; say("string comparisons:"); comparevar('var11 and var12', $var11, $var12); say("one numeric string, one string, make string comparisons:"); comparevar('var13 and var14', $var13, $var14); say("two numeric strings make numeric comparisons:"); comparevar('var11 and var14', $var11, $var14); say("two strings make string comparisons:"); comparevar('var12 and var13', $var12, $var13); say("two numbers make numeric comparisons:"); comparevar('var15 and var16', $var15, $var16); say("one numeric string, one number, make numeric comparisons:"); comparevar('var11 and var14', $var11, $var14); comparevar('var15 and var16', $var15, $var16); comparevar('var11 and var15', $var11, $var15); comparevar('var16 and var14', $var16, $var14); say("one string, one number, make numeric comparisons:"); comparevar('var13 and var15', $var13, $var15); comparevar('var12 and var16', $var12, $var16); comparevar('var13 and var16', $var13, $var16); comparevar('var15 and var12', $var15, $var12); say("and then some weirdness"); comparevar('var13 and var14', $var13, $var14); comparevar('var13 and var16', $var13, $var16); comparevar('var14 and var16', $var14, $var16); comparevar('var17 and var16', $var17, $var16); function comparevar($tag, $arg1, $arg2) { echo("$tag: "); if ($arg1 === $arg2) { say("$arg1 === $arg2"); } if ($arg1 == $arg2) { say("$arg1 == $arg2"); } if ($arg1 < $arg2) { say("$arg1 < $arg2"); } if ($arg1 > $arg2) { say("$arg1 > $arg2"); } if (((! ($arg1 < $arg2)) != ($arg1 > $arg2)) and ($arg1 != $arg2)) {say("screwy 1");} if (((! ($arg1 < $arg2)) != ($arg2 < $arg1)) and ($arg1 != $arg2)) {say("screwy 2");} } function say($str) { echo $str, "\n"; }
Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.27, 8.2.0 - 8.2.17, 8.3.0 - 8.3.4
string comparisons: var11 and var12: 12345 < 22b one numeric string, one string, make string comparisons: var13 and var14: 12345x < 22 two numeric strings make numeric comparisons: var11 and var14: 12345 > 22 two strings make string comparisons: var12 and var13: 22b > 12345x two numbers make numeric comparisons: var15 and var16: 12345 > 22 one numeric string, one number, make numeric comparisons: var11 and var14: 12345 > 22 var15 and var16: 12345 > 22 var11 and var15: 12345 == 12345 var16 and var14: 22 == 22 one string, one number, make numeric comparisons: var13 and var15: 12345x > 12345 var12 and var16: 22b > 22 var13 and var16: 12345x < 22 var15 and var12: 12345 < 22b and then some weirdness var13 and var14: 12345x < 22 var13 and var16: 12345x < 22 var14 and var16: 22 == 22 var17 and var16: 22c > 22
Output for 4.3.0 - 4.3.11, 4.4.0 - 4.4.9, 5.0.0 - 5.0.5, 5.1.0 - 5.1.6, 5.2.0 - 5.2.17, 5.3.0 - 5.3.29, 5.4.0 - 5.4.45, 5.5.24 - 5.5.35, 5.6.8 - 5.6.28, 7.0.0 - 7.0.20, 7.1.0 - 7.1.25, 7.2.0 - 7.2.33, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33
string comparisons: var11 and var12: 12345 < 22b one numeric string, one string, make string comparisons: var13 and var14: 12345x < 22 two numeric strings make numeric comparisons: var11 and var14: 12345 > 22 two strings make string comparisons: var12 and var13: 22b > 12345x two numbers make numeric comparisons: var15 and var16: 12345 > 22 one numeric string, one number, make numeric comparisons: var11 and var14: 12345 > 22 var15 and var16: 12345 > 22 var11 and var15: 12345 == 12345 var16 and var14: 22 == 22 one string, one number, make numeric comparisons: var13 and var15: 12345x == 12345 var12 and var16: 22b == 22 var13 and var16: 12345x > 22 var15 and var12: 12345 > 22b and then some weirdness var13 and var14: 12345x < 22 var13 and var16: 12345x > 22 var14 and var16: 22 == 22 var17 and var16: 22c == 22

preferences:
240.9 ms | 406 KiB | 323 Q