3v4l.org

run code in 150+ php & hhvm versions
Bugs & Features
<pre><?php print "\n"; function prhead($spc){ print "\n".str_pad('$a',$spc-1,' ',STR_PAD_BOTH).'VS.'.str_pad('$b',$spc-1,' ',STR_PAD_BOTH).' '; print '$a>$b'." ".'$a<$b'." ".'$a<=$b'." ".'$a>=$b'." ".'$a==$b'." ".'$a===$b'." \n"; } function prline($item,$spc){ print str_pad($item['typea'].'('.$item['vala'].')',$spc,' ',STR_PAD_BOTH).' '; print str_pad($item['typeb'].'('.$item['valb'].')',$spc,' ',STR_PAD_BOTH); unset($item['typea']);unset($item['typeb']);unset($item['vala']);unset($item['valb']); foreach ($item as $i) print ' '.str_pad($i,5,' ',STR_PAD_LEFT); print " \n"; } $wh=array('boolean','string','double','integer'); $to=array('bool','str','float','int'); $cleanup=array("'' . "," . ''","\n",'array ()'); class simobject{} $res1=curl_init(); $res2=imagecreate(1,1); $q=array(NAN,INF,-INF,NULL,'',array(),'true','text',TRUE,1,1e0,'1',FALSE,'false','-','+',chr(0),0,'0',0e0,-1,-1e0,'-01','-001','01','001'); //$q=array("015","0015","-015","-0015",15,"15","-15",'-',-15,'15e0','15e2',1500,15e0,15e2); //$q=array('A','a','ax','abc'); //Scientific `e` notation is of type `float`, not integer (no mater if too 'small') ! //Integers going over `PHP_INT_MAX` get automatically converted to `float` //Floats going over system's boundaries have `INF` value //Undefined variables are of type and value `NULL` //Integers preceded by `0` are converted from octal do decimal (on assignment) //Converting Strings containing an integer with a leading `0` TO integer strips the leading `0` //Fun string comparison: 'Queen' > 'King' > 'Jack' > 'Ace' $res=array();$crazy=array();$equality=array();$ltgt=array();$compatible=array(); $types=array();$vals=array(); foreach ($q as $a) { foreach ($q as $b) { $item=array(); $typea=str_replace($wh,$to,gettype($a));$types[$typea]=strlen($typea); $vala=str_replace($cleanup,'',var_export($a,true)); $vals[$vala]=strlen($vala); $typeb=str_replace($wh,$to,gettype($b));$types[$typeb]=strlen($typeb); $valb=str_replace($cleanup,'',var_export($b,true)); $vals[$valb]=strlen($valb); //if (($typea!=$typeb)||($vala!=$valb)){ $item['gt']=var_export($a>$b,true); $item['lt']=var_export($a<$b,true); $item['lte']=var_export($a<=$b,true); $item['gte']=var_export($a>=$b,true); $item['eq']=var_export($a==$b,true); $item['eqs']=var_export($a===$b,true); $same=$item; $item['typea']=$typea; $item['typeb']=$typeb; $item['vala']=$vala; $item['valb']=$valb; $head=array($typea.'('.$vala.')',$typeb.'('.$valb.')'); sort($head); $head=implode('',$head); //funny huh? if (count(array_unique($same))==1) { if (!isset($crazy[$head])) $crazy[$head]=$item; } elseif ($item['eq']!=$item['eqs']) { if (!isset($equality[$head])) $equality[$head]=$item; } elseif (($item['eq']==$item['eqs'])&&($item['eq']=='true')) { if (!isset($compatible[$head])) $compatible[$head]=$item; } elseif (($item['lt']==$item['gt'])&&($item['gt']=='true')) { if (!isset($ltgt[$head])) $ltgt[$head]=$item; } else { if (!isset($res[$head])) $res[$head]=$item; } //} } } ksort($crazy); ksort($res); ksort($ltgt); ksort($equality); ksort($compatible); $spc=max($vals)+max($types)+2; print "Very strange: "; prhead($spc); foreach ($crazy as $item) prline($item,$spc); print "\nEqual but not identical: "; prhead($spc); foreach ($equality as $item) prline($item,$spc); print "\nLower and Greater at the same time? "; prhead($spc); foreach ($ltgt as $item) prline($item,$spc); print "\nCompatible (equal and identical): "; prhead($spc); foreach ($compatible as $item) prline($item,$spc); print "\nLower or Greater: "; prhead($spc); foreach ($res as $item) prline($item,$spc); ?></pre>
Output for 7.0.0 - 7.1.0
<pre> Fatal error: Uncaught Error: Call to undefined function curl_init() in /in/O42M6:21 Stack trace: #0 {main} thrown in /in/O42M6 on line 21
Process exited with code 255.
Output for hhvm-3.10.0 - 3.12.0
<pre> Very strange: $a VS. $b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b float(NAN) float(-1) false false false false false false float(NAN) float(-INF) false false false false false false float(NAN) float(0) false false false false false false float(NAN) float(1) false false false false false false float(NAN) float(INF) false false false false false false float(NAN) float(NAN) false false false false false false float(NAN) int(-1) false false false false false false float(NAN) int(0) false false false false false false float(NAN) int(1) false false false false false false float(NAN) str("\0") false false false false false false float(NAN) str('') false false false false false false float(NAN) str('+') false false false false false false float(NAN) str('-') false false false false false false float(NAN) str('-001') false false false false false false float(NAN) str('-01') false false false false false false float(NAN) str('0') false false false false false false float(NAN) str('001') false false false false false false float(NAN) str('01') false false false false false false float(NAN) str('1') false false false false false false float(NAN) str('false') false false false false false false float(NAN) str('text') false false false false false false float(NAN) str('true') false false false false false false Equal but not identical: $a VS. $b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b NULL(NULL) array() false false true true true false NULL(NULL) bool(false) false false true true true false NULL(NULL) float(0) false false true true true false NULL(NULL) int(0) false false true true true false NULL(NULL) str('') false false true true true false array() bool(false) false false true true true false bool(false) float(0) false false true true true false bool(false) int(0) false false true true true false str('') bool(false) false false true true true false bool(false) str('0') false false true true true false bool(true) float(-1) false false true true true false float(-INF) bool(true) false false true true true false bool(true) float(1) false false true true true false float(INF) bool(true) false false true true true false float(NAN) bool(true) false false true true true false bool(true) int(-1) false false true true true false bool(true) int(1) false false true true true false bool(true) str("\0") false false true true true false bool(true) str('+') false false true true true false bool(true) str('-') false false true true true false bool(true) str('-001') false false true true true false bool(true) str('-01') false false true true true false bool(true) str('001') false false true true true false bool(true) str('01') false false true true true false bool(true) str('1') false false true true true false bool(true) str('false') false false true true true false str('text') bool(true) false false true true true false str('true') bool(true) false false true true true false int(-1) float(-1) false false true true true false float(-1) str('-001') false false true true true false float(-1) str('-01') false false true true true false int(0) float(0) false false true true true false str("\0") float(0) false false true true true false str('') float(0) false false true true true false str('+') float(0) false false true true true false str('-') float(0) false false true true true false str('0') float(0) false false true true true false str('false') float(0) false false true true true false str('text') float(0) false false true true true false str('true') float(0) false false true true true false int(1) float(1) false false true true true false float(1) str('001') false false true true true false float(1) str('01') false false true true true false float(1) str('1') false false true true true false int(-1) str('-001') false false true true true false int(-1) str('-01') false false true true true false str("\0") int(0) false false true true true false str('') int(0) false false true true true false str('+') int(0) false false true true true false str('-') int(0) false false true true true false int(0) str('0') false false true true true false str('false') int(0) false false true true true false str('text') int(0) false false true true true false str('true') int(0) false false true true true false int(1) str('001') false false true true true false int(1) str('01') false false true true true false int(1) str('1') false false true true true false str('-01') str('-001') false false true true true false str('01') str('001') false false true true true false str('1') str('001') false false true true true false str('1') str('01') false false true true true false Lower and Greater at the same time? $a VS. $b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b Compatible (equal and identical): $a VS. $b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b NULL(NULL) NULL(NULL) false false true true true true array() array() false false true true true true bool(false) bool(false) false false true true true true bool(true) bool(true) false false true true true true float(-1) float(-1) false false true true true true float(-INF) float(-INF) false false true true true true float(0) float(0) false false true true true true float(1) float(1) false false true true true true float(INF) float(INF) false false true true true true int(-1) int(-1) false false true true true true int(0) int(0) false false true true true true int(1) int(1) false false true true true true str("\0") str("\0") false false true true true true str('') str('') false false true true true true str('+') str('+') false false true true true true str('-') str('-') false false true true true true str('-001') str('-001') false false true true true true str('-01') str('-01') false false true true true true str('0') str('0') false false true true true true str('001') str('001') false false true true true true str('01') str('01') false false true true true true str('1') str('1') false false true true true true str('false') str('false') false false true true true true str('text') str('text') false false true true true true str('true') str('true') false false true true true true Lower or Greater: $a VS. $b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b NULL(NULL) bool(true) false true true false false false NULL(NULL) float(-1) false true true false false false float(-INF) NULL(NULL) true false false true false false NULL(NULL) float(1) false true true false false false float(INF) NULL(NULL) true false false true false false float(NAN) NULL(NULL) true false false true false false NULL(NULL) int(-1) false true true false false false NULL(NULL) int(1) false true true false false false NULL(NULL) str("\0") false true true false false false NULL(NULL) str('+') false true true false false false NULL(NULL) str('-') false true true false false false NULL(NULL) str('-001') false true true false false false NULL(NULL) str('-01') false true true false false false NULL(NULL) str('0') false true true false false false NULL(NULL) str('001') false true true false false false NULL(NULL) str('01') false true true false false false NULL(NULL) str('1') false true true false false false NULL(NULL) str('false') false true true false false false NULL(NULL) str('text') false true true false false false NULL(NULL) str('true') false true true false false false array() bool(true) false true true false false false array() float(-1) true false false true false false float(-INF) array() false true true false false false array() float(0) true false false true false false array() float(1) true false false true false false float(INF) array() false true true false false false float(NAN) array() false true true false false false array() int(-1) true false false true false false array() int(0) true false false true false false array() int(1) true false false true false false array() str("\0") true false false true false false str('') array() false true true false false false array() str('+') true false false true false false array() str('-') true false false true false false array() str('-001') true false false true false false array() str('-01') true false false true false false array() str('0') true false false true false false array() str('001') true false false true false false array() str('01') true false false true false false array() str('1') true false false true false false array() str('false') true false false true false false array() str('text') true false false true false false array() str('true') true false false true false false bool(true) bool(false) true false false true false false bool(false) float(-1) false true true false false false float(-INF) bool(false) true false false true false false float(1) bool(false) true false false true false false float(INF) bool(false) true false false true false false float(NAN) bool(false) true false false true false false bool(false) int(-1) false true true false false false int(1) bool(false) true false false true false false bool(false) str("\0") false true true false false false bool(false) str('+') false true true false false false bool(false) str('-') false true true false false false bool(false) str('-001') false true true false false false bool(false) str('-01') false true true false false false bool(false) str('001') false true true false false false bool(false) str('01') false true true false false false str('1') bool(false) true false false true false false bool(false) str('false') false true true false false false str('text') bool(false) true false false true false false str('true') bool(false) true false false true false false bool(true) float(0) true false false true false false bool(true) int(0) true false false true false false str('') bool(true) false true true false false false bool(true) str('0') true false false true false false float(-INF) float(-1) false true true false false false float(0) float(-1) true false false true false false float(1) float(-1) true false false true false false float(INF) float(-1) true false false true false false int(0) float(-1) true false false true false false int(1) float(-1) true false false true false false str("\0") float(-1) true false false true false false str('') float(-1) true false false true false false str('+') float(-1) true false false true false false str('-') float(-1) true false false true false false str('0') float(-1) true false false true false false float(-1) str('001') false true true false false false float(-1) str('01') false true true false false false str('1') float(-1) true false false true false false str('false') float(-1) true false false true false false str('text') float(-1) true false false true false false str('true') float(-1) true false false true false false float(-INF) float(0) false true true false false false float(-INF) float(1) false true true false false false float(INF) float(-INF) true false false true false false float(-INF) int(-1) false true true false false false float(-INF) int(0) false true true false false false float(-INF) int(1) false true true false false false float(-INF) str("\0") false true true false false false float(-INF) str('') false true true false false false float(-INF) str('+') false true true false false false float(-INF) str('-') false true true false false false float(-INF) str('-001') false true true false false false float(-INF) str('-01') false true true false false false float(-INF) str('0') false true true false false false float(-INF) str('001') false true true false false false float(-INF) str('01') false true true false false false float(-INF) str('1') false true true false false false float(-INF) str('false') false true true false false false float(-INF) str('text') false true true false false false float(-INF) str('true') false true true false false false float(1) float(0) true false false true false false float(INF) float(0) true false false true false false float(0) int(-1) true false false true false false int(1) float(0) true false false true false false float(0) str('-001') true false false true false false float(0) str('-01') true false false true false false float(0) str('001') false true true false false false float(0) str('01') false true true false false false str('1') float(0) true false false true false false float(INF) float(1) true false false true false false float(1) int(-1) true false false true false false float(1) int(0) true false false true false false float(1) str("\0") true false false true false false str('') float(1) false true true false false false float(1) str('+') true false false true false false float(1) str('-') true false false true false false float(1) str('-001') true false false true false false float(1) str('-01') true false false true false false float(1) str('0') true false false true false false float(1) str('false') true false false true false false str('text') float(1) false true true false false false str('true') float(1) false true true false false false float(INF) int(-1) true false false true false false float(INF) int(0) true false false true false false float(INF) int(1) true false false true false false float(INF) str("\0") true false false true false false float(INF) str('') true false false true false false float(INF) str('+') true false false true false false float(INF) str('-') true false false true false false float(INF) str('-001') true false false true false false float(INF) str('-01') true false false true false false float(INF) str('0') true false false true false false float(INF) str('001') true false false true false false float(INF) str('01') true false false true false false float(INF) str('1') true false false true false false float(INF) str('false') true false false true false false float(INF) str('text') true false false true false false float(INF) str('true') true false false true false false int(0) int(-1) true false false true false false int(1) int(-1) true false false true false false str("\0") int(-1) true false false true false false str('') int(-1) true false false true false false str('+') int(-1) true false false true false false str('-') int(-1) true false false true false false str('0') int(-1) true false false true false false int(-1) str('001') false true true false false false int(-1) str('01') false true true false false false str('1') int(-1) true false false true false false str('false') int(-1) true false false true false false str('text') int(-1) true false false true false false str('true') int(-1) true false false true false false int(1) int(0) true false false true false false int(0) str('-001') true false false true false false int(0) str('-01') true false false true false false int(0) str('001') false true true false false false int(0) str('01') false true true false false false str('1') int(0) true false false true false false int(1) str("\0") true false false true false false str('') int(1) false true true false false false int(1) str('+') true false false true false false int(1) str('-') true false false true false false int(1) str('-001') true false false true false false int(1) str('-01') true false false true false false int(1) str('0') true false false true false false int(1) str('false') true false false true false false str('text') int(1) false true true false false false str('true') int(1) false true true false false false str('') str("\0") false true true false false false str('+') str("\0") true false false true false false str('-') str("\0") true false false true false false str("\0") str('-001') false true true false false false str("\0") str('-01') false true true false false false str("\0") str('0') false true true false false false str("\0") str('001') false true true false false false str("\0") str('01') false true true false false false str('1') str("\0") true false false true false false str('false') str("\0") true false false true false false str('text') str("\0") true false false true false false str('true') str("\0") true false false true false false str('') str('+') false true true false false false str('') str('-') false true true false false false str('') str('-001') false true true false false false str('') str('-01') false true true false false false str('') str('0') false true true false false false str('') str('001') false true true false false false str('') str('01') false true true false false false str('') str('1') false true true false false false str('') str('false') false true true false false false str('') str('text') false true true false false false str('') str('true') false true true false false false str('-') str('+') true false false true false false str('+') str('-001') false true true false false false str('+') str('-01') false true true false false false str('+') str('0') false true true false false false str('+') str('001') false true true false false false str('+') str('01') false true true false false false str('1') str('+') true false false true false false str('false') str('+') true false false true false false str('text') str('+') true false false true false false str('true') str('+') true false false true false false str('-') str('-001') false true true false false false str('-') str('-01') false true true false false false str('-') str('0') false true true false false false str('-') str('001') false true true false false false str('-') str('01') false true true false false false str('1') str('-') true false false true false false str('false') str('-') true false false true false false str('text') str('-') true false false true false false str('true') str('-') true false false true false false str('0') str('-001') true false false true false false str('-001') str('001') false true true false false false str('-001') str('01') false true true false false false str('1') str('-001') true false false true false false str('false') str('-001') true false false true false false str('text') str('-001') true false false true false false str('true') str('-001') true false false true false false str('0') str('-01') true false false true false false str('-01') str('001') false true true false false false str('-01') str('01') false true true false false false str('1') str('-01') true false false true false false str('false') str('-01') true false false true false false str('text') str('-01') true false false true false false str('true') str('-01') true false false true false false str('0') str('001') false true true false false false str('0') str('01') false true true false false false str('1') str('0') true false false true false false str('false') str('0') true false false true false false str('text') str('0') true false false true false false str('true') str('0') true false false true false false str('false') str('001') true false false true false false str('text') str('001') true false false true false false str('true') str('001') true false false true false false str('false') str('01') true false false true false false str('text') str('01') true false false true false false str('true') str('01') true false false true false false str('1') str('false') false true true false false false str('text') str('1') true false false true false false str('true') str('1') true false false true false false str('text') str('false') true false false true false false str('true') str('false') true false false true false false str('true') str('text') true false false true false false </pre>
Output for 5.3.0 - 5.6.28
<pre> Fatal error: Call to undefined function curl_init() in /in/O42M6 on line 21
Process exited with code 255.