does the condition after && always get evaluated
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 ||
.
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.
<?phpperform_action() or die ('failed to perform the action');?>
is a popular idiom.