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 condi
Yes. The two blocks are the same. PHP, like most (but not all) languages, uses short-circuit evaluation for &&
and ||
.
Yes, the 2 code blocks you gave are equivalent. PHP has short-circuiting, so when you use || and &&, any statement after the first only gets evaluated when necessary.
The two blocks ARE same.
PHP logical operators are "lazy", they are evaluated only if they are needed. The following code prints "Hello, world!":
<?php
$a = 10;
isset($a) || die ("variable \$a does not exist.");
print "Hello, world!"
?>
Other logical operators includes &&, and, or.
<?php
perform_action() or die ('failed to perform the action');
?>
is a popular idiom.
the second condition will only be checked if and only if first one is true, hence both statements are equivalent.
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());
Always corelate your technical Language with your own language, Likewise here, If I say you in verbal conversation, its just like :You are asking= "if I am hungry '&&' I am eating Pizza" is similar to "If I am hungry then only i am eating Pizza"? So here you can see that later phrase says that untill i am not hungry i am not eating pizza, and the former says I am humgry and I am eating pizza. :-)