Esempio | Nome | Risultato |
---|---|---|
$a and $b | And | TRUE se $a e $b sono entrambe TRUE . |
$a or $b | Or | TRUE se $a o $b è TRUE . |
$a xor $b | Xor | TRUE se $a o $b è TRUE , ma non entrambe. |
! $a | Not | TRUE se $a non è TRUE . |
$a && $b | And | TRUE se $a e $b sono entrambe TRUE . |
$a || $b | Or | TRUE se $a o $b è TRUE . |
La ragione per le due differenti variazioni degli operatori "and" e "or" è che operano con differenti precedenze. (Vedere Precedenza degli operatori.)
Example #1 Dimostrazione degli operatori logici
<?php
// --------------------
// foo() non viene mai chiamata in quanto gli operatori sono in corto-circuito
$a = (false && foo());
$b = (true || foo());
$c = (false and foo());
$d = (true or foo());
// --------------------
// "||" ha una precedenza maggiore rispetto a "or"
// Il risultato dell'espressione (false || true) è assegnato a $e
// Funziona come: ($e = (false || true))
$e = false || true;
// La costante false è assegnata a $f e quindi true è ignorato
// Funziona come: (($f = false) or true)
$f = false or true;
var_dump($e, $f);
// --------------------
// "&&" ha una precesenza maggiore rispetto a "and"
// Il risultato dell'espressione (true && false) è assegnato a $g
// Funziona come: ($g = (true && false))
$g = true && false;
// La costante true è assegnata a $h e quindi false è ignorato
// Funziona come: (($h = true) and false)
$h = true and false;
var_dump($g, $h);
?>
Il precedente esempio visualizzerà qualcosa simile a:
bool(true) bool(false) bool(false) bool(true)