3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<?php $debug = 1; if (! $debug) { error_reporting(E_ERROR); } else { error_reporting(E_ALL); } $arr1 []= 'wello'; $var2 = 'woodbye wruel world'; $var3 = pack("n*", 0x77, 0x32 + 0x33, 0x6c, 0x6e-2, 0x6f); $var4 = pack('n*', 0x7765, 0x6c6c, 0x6f00); $var5 = pack('n*', 0x7765, 0x6c00, 0x6c6f); if ($debug) { echo "var3 = $var3\n"; var_dump($var4); if ($var4 == $arr1[0]) {echo "$var3 == $arr1[0]"; } if (! strcmp($var4, $arr1[0])) { echo "got a match with strcmp"; } } poor_mans_strcmp('a', 'z'); poor_mans_strcmp('q111f', 'fffff'); poor_mans_strcmp($arr1, $var2); poor_mans_strcmp($arr1[0], $var2); poor_mans_strcmp($var2, $var2); poor_mans_strcmp($arr1[0], $var3); poor_mans_strcmp($arr1[0], $var4); poor_mans_strcmp($arr1[0], $var5); echo "trying the binary safe node!\n"; poor_mans_strcmp($arr1[0], $var3, 1); poor_mans_strcmp($arr1[0], $var4, 1); poor_mans_strcmp($arr1[0], $var5, 1); function poor_mans_strcmp($str1, $str2, $binary_safe = 0) { global $debug; # use old shell programming trick $str3 = 'a' . $str1; $str4 = 'a' . $str2; if ($binary_safe) { # strip null bytes to make it binary safe! $str3 = str_replace(chr(0), '', $str3); $str4 = str_replace(chr(0), '', $str4); } if ($debug) {var_dump($str3, $str4);} $result = 0; if ($str3 < $str4) { echo "$str1 is LESSTHAN $str2\n"; $result = -1; } if ($str3 > $str4) { if ($result == -1) {echo "Serious error detected, keep on trucking!\n";} $result = 1; echo "$str1 is GREATERTHAN $str2\n"; } if ($result == 0) {echo "MATCH: $str1 with $str2\n";} return $result; }
based on tRF3l
Output for 5.4.0 - 5.6.28, hhvm-3.12.0, 7.0.0 - 7.1.0
var3 = wello string(6) "wello" string(2) "aa" string(2) "az" a is LESSTHAN z string(6) "aq111f" string(6) "afffff" q111f is GREATERTHAN fffff Notice: Array to string conversion in /in/sBUJX on line 40 string(6) "aArray" string(20) "awoodbye wruel world" Notice: Array to string conversion in /in/sBUJX on line 52 Array is LESSTHAN woodbye wruel world string(6) "awello" string(20) "awoodbye wruel world" wello is LESSTHAN woodbye wruel world string(20) "awoodbye wruel world" string(20) "awoodbye wruel world" MATCH: woodbye wruel world with woodbye wruel world string(6) "awello" string(11) "awello" wello is GREATERTHAN wello string(6) "awello" string(7) "awello" wello is LESSTHAN wello string(6) "awello" string(7) "awello" wello is GREATERTHAN wello trying the binary safe node! string(6) "awello" string(6) "awello" MATCH: wello with wello string(6) "awello" string(6) "awello" MATCH: wello with wello string(6) "awello" string(6) "awello" MATCH: wello with wello
Output for hhvm-3.10.0

Process exited with code 153.
Output for 4.3.0 - 5.3.29
var3 = wello string(6) "wello" string(2) "aa" string(2) "az" a is LESSTHAN z string(6) "aq111f" string(6) "afffff" q111f is GREATERTHAN fffff string(6) "aArray" string(20) "awoodbye wruel world" Array is LESSTHAN woodbye wruel world string(6) "awello" string(20) "awoodbye wruel world" wello is LESSTHAN woodbye wruel world string(20) "awoodbye wruel world" string(20) "awoodbye wruel world" MATCH: woodbye wruel world with woodbye wruel world string(6) "awello" string(11) "awello" wello is GREATERTHAN wello string(6) "awello" string(7) "awello" wello is LESSTHAN wello string(6) "awello" string(7) "awello" wello is GREATERTHAN wello trying the binary safe node! string(6) "awello" string(6) "awello" MATCH: wello with wello string(6) "awello" string(6) "awello" MATCH: wello with wello string(6) "awello" string(6) "awello" MATCH: wello with wello