Expressions And Operators: Logical AND
The binary operator &&
determines the truth of an expression involving two operands. For example:
if ($month > 1 && $month <= 12) ...
Here, the left-hand operand, $month > 1
, is evaluated first. If the result is false
, the right-hand operand, $month <= 12
, is not
evaluated, and the result has type bool
, value false
. Otherwise, the right-hand operand is evaluated, and if it has the value false
,
the result has type bool
, value false
; otherwise, the result has type bool
, value true
.
Consider the following:
if ($month > 6 && get_value(--$count) < 50) ...
Only if $month
is greater than 6 is $count
decremented and function get_value
called. That is, there is a sequence point
after the evaluation of the left-hand operand. Consider the following:
if ($x++ + do_it() < 15 && $values[$x] > 10) ...
Because of the sequence point, we know that if the left-hand operand tests true
, and we're evaluating the right-hand operand, $x
will already have been incremented and function do_it
will have been called.
If either operand does not have type bool
, its value is first converted to that type.