Ejemplo | Nombre | Resultado |
---|---|---|
$a and $b | Y | TRUE si tanto $a como $b son TRUE. |
$a or $b | O | TRUE si cualquiera de $a o $b es TRUE. |
$a xor $b | O exclusivo (Xor) | TRUE si $a o $b es TRUE, pero no ambos. |
! $a | No | TRUE si $a no es TRUE. |
$a && $b | Y | TRUE si tanto $a como $b son TRUE. |
$a || $b | O | TRUE si cualquiera de $a o $b es TRUE. |
La razón para tener las dos variaciones diferentes de los operadores "and" y "or" es que ellos operan con precedencias diferentes. (Vea Precedencia de Operadores.)
Example#1 Ilustración de los operadores lógicos
<?php
// foo() nunca será llamada ya que esos operadores trabajan en modo corto-circuito
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());
// "||" tiene una precedencia mayor que "or"
$e = false || true; // $e será definido como (false || true) lo cual es true
$f = false or true; // $f será definido como false
var_dump($e, $f);
// "&&" tiene una precedencia mayor que "and"
$g = true && false; // $g será definido como (true && false) lo que es false
$h = true and false; // $h será definido como true
var_dump($g, $h);
El resultado del ejemplo seria algo similar a:
bool(true) bool(false) bool(false) bool(true)