Re: Broken IF behavior? (Changing the branch changes the evaluation)

From: Date: Tue, 28 Jul 2009 18:56:48 +0000
Subject: Re: Broken IF behavior? (Changing the branch changes the evaluation)
References: 1  Groups: php.general 
Request: Send a blank email to php-general+get-295969@lists.php.net to get a copy of this message
On Tue, Jul 28, 2009 at 2:48 PM, Matt Neimeyer<matt@neimeyer.org> wrote: > 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 > > -- > PHP General Mailing List (http://www.php.net/) > To unsubscribe, visit: http://www.php.net/unsub.php > > What's the output of var_dump($Ret) right before that if statement?

« previous php.general (#295969) next »