Bug #77928 [Nab]: echo ('string'==0)?"TRUE":"FALSE"; // TRUE

From: Date: Sun, 21 Apr 2019 06:14:33 +0000
Subject: Bug #77928 [Nab]: echo ('string'==0)?"TRUE":"FALSE"; // TRUE
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-220543@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=77928&edit=1 ID: 77928 User updated by: shamil dot kur at gmail dot com Reported by: shamil dot kur at gmail dot com Summary: echo ('string'==0)?"TRUE":"FALSE"; // TRUE Status: Not a bug Type: Bug Package: *General Issues Operating System: Debian PHP Version: 7.3.4 Block user comment: N Private report: N New Comment: // You are joking? // It violates the laws of logic. $a=0; $b='string 1'; $с='string 2'; if(($a==$b) && ($a==$c))echo "\$b==\$c"; // But $b don't eq $c. if($b!=$c)echo "\$b!=\$c"; Previous Comments: ------------------------------------------------------------------------ [2019-04-20 18:53:02] requinix@php.net Thank you for taking the time to write to us, but this is not a bug. Please double-check the documentation available at http://www.php.net/manual/ and the instructions on how to report a bug at http://bugs.php.net/how-to-report.php ------------------------------------------------------------------------ [2019-04-20 18:22:33] spam2 at rhsoft dot net Expected: echo ('string'==0)?"TRUE":"FALSE"; // FALSE - OK fix your expectations! 'string'==0 evaluates to TRUE php > echo ('string'==0); 1 php > echo ('string'===0); php > that's how PHP works all the time https://www.php.net/manual/en/language.types.type-juggling.php ------------------------------------------------------------------------ [2019-04-20 17:59:36] shamil dot kur at gmail dot com Description: ------------ Expected: echo ('string'==0)?"TRUE":"FALSE"; // FALSE - OK echo (''==0)?"TRUE":"FALSE"; // TRUE - OK echo ('string'==1)?"TRUE":"FALSE"; // TRUE - OK echo (''==1)?"TRUE":"FALSE"; // FALSE - OK The actual result: PHP 7.3.4 echo ('string'==0)?"TRUE":"FALSE"; // TRUE - it's ERROR echo (''==0)?"TRUE":"FALSE"; // TRUE - OK echo ('string'==1)?"TRUE":"FALSE"; // FALSE - it's ERROR echo (''==1)?"TRUE":"FALSE"; // FALSE - OK Test script: --------------- if(''==0)echo "printed text 0\n"; //this line printed if('string'==0)echo "printed text 1\n"; //this line printed // ERROR if(''==1)echo "printed text 2\n"; //never printed if('string'==1)echo "printed text 3\n"; //never printed // ERROR Expected: printed text 0 printed text 3 The actual result: printed text 0 printed text 1 ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=77928&edit=1

« previous php.bugs (#220543) next »