Broken IF behavior? (Changing the branch changes the evaluation)
| From: | Matt Neimeyer | Date: | Tue, 28 Jul 2009 18:48:44 +0000 |
| Subject: | Broken IF behavior? (Changing the branch changes the evaluation) | ||
| Groups: | php.general | ||
| Request: | Send a blank email to php-general+get-295967@lists.php.net to get a copy of this message | ||
Background: I'm converting a webapp from Visual FoxPro as a backend to
MySQL... However one part of our app (a system status checker) is
common code between the versions.
I've got the following function... In English (in case it's not
apparent), if the version of the app is 2.0 or higher, then use MySQL
functions, otherwise use the ODBTP function to connect to VFP.
function my_fetch_array($result)
{
global $Version;
if(version_compare($Version,"2.0",">="))
{ $Ret = mysql_fetch_array($result); if(!$Ret) { } else { return $Ret; } }
else { $Ret = odbtp_fetch_array($result); if(!$Ret) { } else { return $Ret; } }
}
This feels like a hack but works perfectly. Data is returned and all
is right with the world. Until I added in extra "error reporting".
When I change the if(!$Ret) portion as such...
if(!$Ret) { die("myError".mysql_error()); } else { return $Ret; }
It ALWAYS dies... and I see "myError" on the screen... If I change it
like such...
if(!$Ret) { } else { echo "notError"; return $Ret; }
I always see the "notError" on the screen and $Ret gets returned.
WHY does adding the die() inside the { } change the way the if is evaluated?
By the way I've tested this on 4.4.x on OSX and Windows, and on 5.2.5
on Windows...
Thanks
Matt