I have this if
statement that tests for the 2 conditions below. The second one is a function goodToGo()
so I want to call it unless the first condition is already true
$value = 2239; if ($value < 2000 && goodToGo($value)){ //do stuff } function goodToGo($value){ $ret = //some processing of the value return $ret; }
My question is about the 2 if conditions $value < 2000
&&
goodToGo($value)
. Do they both get evaluated or does the second one only get evaluated when the first one is true?
In other words, are the following 2 blocks the same?
if($value < 2000 && goodToGo($value)) { //stuff to do } if($value < 2000) { if (goodToGo($value)){ //stuff to do } }
Conditional StatementsUse if to specify a block of code to be executed, if a specified condition is true. Use else to specify a block of code to be executed, if the same condition is false. Use else if to specify a new condition to test, if the first condition is false.
if else statements will execute a block of code when the condition in the if statement is truthy . If the condition is falsy , then the else block will be executed.
No, java uses short-circuit evaluation on expressions using || and && . See here for more info. Not all "boolean expressions"; you can use & and | with booleans, and they are not short-circuiting.
No--the second condition won't always be executed (which makes your examples equivalent).
PHP's &&
, ||
, and
, and or
operators are implemented as "short-circuit" operators. As soon as a condition is found that forces the result for the overall conditional, evaluation of subsequent conditions stops.
From http://www.php.net/manual/en/language.operators.logical.php
// -------------------- // foo() will never get called as those operators are short-circuit $a = (false && foo()); $b = (true || foo()); $c = (false and foo()); $d = (true or foo());
Yes. The two blocks are the same. PHP, like most (but not all) languages, uses short-circuit evaluation for &&
and ||
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With