## Les opérateurs logiques

Les opérateurs logiques
Exemple | Nom | Résultat
--- | --- | ---
$a and $b | And (Et) | `true` si $a ET $b valent `true`.
$a or $b | Or (Ou) | `true` si $a OU $b est `true`.
$a xor $b | XOR | `true` si $a OU $b est `true`, mais pas les deux en même temps.
! $a | Not (Non) | `true` si $a n'est pas `true`.
$a && $b | And (Et) | `true` si $a ET $b sont `true`.
$a || $b | Or (Ou) | `true` si $a OU $b est `true`.

La raison pour laquelle il existe deux types de "ET" et de "OU" est qu'ils ont des priorités différentes. Voir le paragraphe précédence d'opérateurs.

Exemple #1 Illustration des opérateurs logiques

    <?php

    // --------------------
    // foo() ne sera jamais appelée, car ces opérateurs sont en court-circuit

    $a = (false && foo());
    $b = (true || foo());
    $c = (false and foo());
    $d = (true or foo());

    // --------------------
    // "||" a une précédence supérieure à "or"

    // Le résultat de l'expression (false || true) est affecté à $e
    // Agit comme : ($e = (false || true))
    $e = false || true;

    // La constante false est affectée à $f avant que l'opération "or" apparaisse
    // Agit comme : (($f = false) or true)
    $f = false or true;

    var_dump($e, $f);

    // --------------------
    // "&&" a une précédence supérieure à "and"

    // Le résultat de l'expression (true && false) est affecté à $g
    // Agit comme : ($g = (true && false))
    $g = true && false;

    // La constante true est affectée à $h avant que l'opération "and" apparaisse
    // Agit comme : (($h = true) and false)
    $h = true and false;

    var_dump($g, $h);
    ?>

Résultat de l'exemple ci-dessus est similaire à :

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

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open