﻿ Logical Operators

# Logical Operators

### Table 6.7. Logical Operators

ExampleNameResult
\$a and \$bAnd`TRUE` if both \$a and \$b are `TRUE`.
\$a or \$bOr`TRUE` if either \$a or \$b is `TRUE`.
\$a xor \$bXor`TRUE` if either \$a or \$b is `TRUE`, but not both.
! \$aNot`TRUE` if \$a is not `TRUE`.
\$a && \$bAnd`TRUE` if both \$a and \$b are `TRUE`.
\$a || \$bOr`TRUE` if either \$a or \$b is `TRUE`.

The reason for the two different variations of "and" and "or" operators is that they operate at different precedences. (See Operator Precedence.)

### Example 6.6. Logical operators illustrated

```<?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()); // "||" has a greater precedence than "or" \$e = false || true; // \$e will be assigned to (false || true) which is true \$f = false or true; // \$f will be assigned to false var_dump(\$e, \$f); // "&&" has a greater precedence than "and" \$g = true && false; // \$g will be assigned to (true && false) which is false \$h = true and false; // \$h will be assigned to true var_dump(\$g, \$h);```

The above example will output something similar to:

```bool(true) bool(false) bool(false) bool(true)```

﻿