infratl Posted April 14, 2006 Share Posted April 14, 2006 hi, i came across this question recently. I often use conditional statements like:<?php[b]if[/b] (opendir($newdir)) {die('Directory already exists');}?>could i write that condition in this form:<?phpopendir($newdir)) [b]and[/b] die('Directory already exists');?>what would be better performance-wise or what would be more appropriate coding? i've always used the [b]if[/b] construct, but i'm curious about the [b]and[/b] construct since the manual uses [b]or die[/b] in several cases.what's the difference between using the"statement1 [b]and[/b] statement2"instead of"[b]if[/b](statemente1) {statement2}"? i know the above example is bad because i should really use file_exists() to test for the existence of the directory. however, if i were to do it with opendir, which one should i use, the [b]if[/b] or the [b]and[/b], and why? Quote Link to comment https://forums.phpfreaks.com/topic/7435-conditional-if-versus-statement-and-statement/ Share on other sites More sharing options...
ToonMariner Posted April 14, 2006 Share Posted April 14, 2006 Where on earth have you seen this used in this way before???I think you have something mixed up, the example you have given has no apparent use what so ever!!!!I don't even think you can use and in this context either (saying that without trying it of course!!) Quote Link to comment https://forums.phpfreaks.com/topic/7435-conditional-if-versus-statement-and-statement/#findComment-27115 Share on other sites More sharing options...
infratl Posted April 15, 2006 Author Share Posted April 15, 2006 ok, let me change up the example a bit like this:say i have some code that reads:<?phpif(file_exists($filename)) die('File already exists');?>couldn't i simply write it as:<?phpfile_exists($filename) and die('File already exists');?>wouldn't these two produce the same results? is there an advantage or disadvantage of using one over the other? i know the if condition is more readable than the and. but as far as performance and correctness of code how do they compare? Quote Link to comment https://forums.phpfreaks.com/topic/7435-conditional-if-versus-statement-and-statement/#findComment-27145 Share on other sites More sharing options...
AndyB Posted April 15, 2006 Share Posted April 15, 2006 Why don't you try each of those pieces of 'code' and see what happens? You'll learn more that way. Quote Link to comment https://forums.phpfreaks.com/topic/7435-conditional-if-versus-statement-and-statement/#findComment-27147 Share on other sites More sharing options...
wildteen88 Posted April 15, 2006 Share Posted April 15, 2006 Ha, I've just learnt somthing new today. [b]infratl[/b] I can confirm you can do the following:[code]file_exists($filename) and die('File already exists');[/code]Never knew you could do that. Quote Link to comment https://forums.phpfreaks.com/topic/7435-conditional-if-versus-statement-and-statement/#findComment-27187 Share on other sites More sharing options...
Barand Posted April 15, 2006 Share Posted April 15, 2006 1 ) Both parts of an AND expression are supposed to be boolean expressions evaluating to true or false. die() returns void.2 ) Both parts should be evaluated to see if the whole expression gives true or false, therefore one would expect the die() to be executed in all cases.I can only assume that this works only because of current deficiency in the PHP processor and shouldn't be relied upon, apart from being virtually unreadable to anyone having to maintain your code.That's my $0.02 worth. Quote Link to comment https://forums.phpfreaks.com/topic/7435-conditional-if-versus-statement-and-statement/#findComment-27195 Share on other sites More sharing options...
infratl Posted April 15, 2006 Author Share Posted April 15, 2006 [!--quoteo(post=365022:date=Apr 15 2006, 05:16 AM:name=Barand)--][div class=\'quotetop\']QUOTE(Barand @ Apr 15 2006, 05:16 AM) [snapback]365022[/snapback][/div][div class=\'quotemain\'][!--quotec--]1 ) Both parts of an AND expression are supposed to be boolean expressions evaluating to true or false. die() returns void.[/quote]Well, wouldn't the same be true about an OR expression? Both parts are supposed to be boolean expressions. However, in the php manual, especially with the mysql functions, there are lots of examples like this one taken from [a href=\"http://us3.php.net/manual/en/function.mysql-fetch-array.php\" target=\"_blank\"]http://us3.php.net/manual/en/function.mysql-fetch-array.php[/a] :<?phpmysql_connect("localhost", "mysql_user", "mysql_password") or die("Could not connect: " . mysql_error());......[!--quoteo(post=365022:date=Apr 15 2006, 05:16 AM:name=Barand)--][div class=\'quotetop\']QUOTE(Barand @ Apr 15 2006, 05:16 AM) [snapback]365022[/snapback][/div][div class=\'quotemain\'][!--quotec--]2 ) Both parts should be evaluated to see if the whole expression gives true or false, therefore one would expect the die() to be executed in all cases.[/quote]I don't think this is true because according to the manual AND and OR epressions are short-circuited. Meaning that, in an AND expression, if the first part is false, php won't evaluate the second part because, even if it did, the whole expression is already false. The same is true with the OR expression. If the first part is true, php won't evaluate the second part, because the whole expression is already true.[!--quoteo(post=365022:date=Apr 15 2006, 05:16 AM:name=Barand)--][div class=\'quotetop\']QUOTE(Barand @ Apr 15 2006, 05:16 AM) [snapback]365022[/snapback][/div][div class=\'quotemain\'][!--quotec--]I can only assume that this works only because of current deficiency in the PHP processor and shouldn't be relied upon, apart from being virtually unreadable to anyone having to maintain your code.[/quote]I don't think it's a deficiency as php was, again according to info in the manual, designed to have the short-circuit or lazy evaluation feature.I do agree that it is pretty unreadable though. A programmer that's not used to seeing code written that way would probably take long to figure out what's going on. Quote Link to comment https://forums.phpfreaks.com/topic/7435-conditional-if-versus-statement-and-statement/#findComment-27319 Share on other sites More sharing options...
Barand Posted April 15, 2006 Share Posted April 15, 2006 OK, point taken. I'll settle for agreeing on the readability issue :-) Quote Link to comment https://forums.phpfreaks.com/topic/7435-conditional-if-versus-statement-and-statement/#findComment-27323 Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.