3v4l.org

run code in 300+ PHP versions simultaneously
<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 ()'); $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; echo "sandysonya"; 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 git.master, git.master_jit, rfc.property-hooks
<pre> sandysonyaVery strange: $a VS. $b $a>$b $a<$b $a<=$b $a>=$b $a==$b $a===$b float(NAN) float(-1.0) false false false false false false float(NAN) float(-INF) false false false false false false float(NAN) float(0.0) false false false false false false float(NAN) float(1.0) 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.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.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.0) false false true true true false float(-INF) bool(true) false false true true true false bool(true) float(1.0) 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.0) false false true true true false float(-1.0) str('-001') false false true true true false float(-1.0) str('-01') false false true true true false int(0) float(0.0) false false true true true false str('0') float(0.0) false false true true true false int(1) float(1.0) false false true true true false float(1.0) str('001') false false true true true false float(1.0) str('01') false false true true true false float(1.0) 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 int(0) str('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.0) float(-1.0) false false true true true true float(-INF) float(-INF) false false true true true true float(0.0) float(0.0) false false true true true true float(1.0) float(1.0) 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.0) false true true false false false float(-INF) NULL(NULL) true false false true false false NULL(NULL) float(1.0) 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.0) true false false true false false float(-INF) array() false true true false false false array() float(0.0) true false false true false false array() float(1.0) 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.0) false true true false false false float(-INF) bool(false) true false false true false false float(1.0) 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.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.0) false true true false false false float(0.0) float(-1.0) true false false true false false float(1.0) float(-1.0) true false false true false false float(INF) float(-1.0) true false false true false false int(0) float(-1.0) true false false true false false int(1) float(-1.0) true false false true false false str("\0") float(-1.0) false true true false false false str('') float(-1.0) false true true false false false str('+') float(-1.0) false true true false false false str('-') float(-1.0) false true true false false false str('0') float(-1.0) true false false true false false float(-1.0) str('001') false true true false false false float(-1.0) str('01') false true true false false false str('1') float(-1.0) true false false true false false str('false') float(-1.0) true false false true false false str('text') float(-1.0) true false false true false false str('true') float(-1.0) true false false true false false float(-INF) float(0.0) false true true false false false float(-INF) float(1.0) 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") 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') 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.0) float(0.0) true false false true false false float(INF) float(0.0) true false false true false false float(0.0) int(-1) true false false true false false int(1) float(0.0) true false false true false false str("\0") float(0.0) false true true false false false str('') float(0.0) false true true false false false str('+') float(0.0) false true true false false false str('-') float(0.0) false true true false false false float(0.0) str('-001') true false false true false false float(0.0) str('-01') true false false true false false float(0.0) str('001') false true true false false false float(0.0) str('01') false true true false false false str('1') float(0.0) true false false true false false str('false') float(0.0) true false false true false false str('text') float(0.0) true false false true false false str('true') float(0.0) true false false true false false float(INF) float(1.0) true false false true false false float(1.0) int(-1) true false false true false false float(1.0) int(0) true false false true false false float(1.0) str("\0") true false false true false false str('') float(1.0) false true true false false false float(1.0) str('+') true false false true false false float(1.0) str('-') true false false true false false float(1.0) str('-001') true false false true false false float(1.0) str('-01') true false false true false false float(1.0) str('0') true false false true false false float(1.0) str('false') false true true false false false str('text') float(1.0) true false false true false false str('true') float(1.0) true false false true 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') 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 int(0) int(-1) true false false true false false int(1) int(-1) true false false true false false str("\0") int(-1) false true true false false false str('') int(-1) false true true false false false str('+') int(-1) false true true false false false str('-') int(-1) false true true false 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 str("\0") int(0) false true true false false false str('') int(0) false true true false false false str('+') int(0) false true true false false false str('-') int(0) false true true false 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 str('false') int(0) true false false true false false str('text') int(0) true false false true false false str('true') 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') false true true false false false str('text') int(1) true false false true false false str('true') int(1) true false false true 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>

This tab shows result from various feature-branches currently under review by the php developers. Contact me to have additional branches featured.

Active branches

Archived branches

Once feature-branches are merged or declined, they are no longer available. Their functionality (when merged) can be viewed from the main output page


preferences:
43.02 ms | 457 KiB | 8 Q