W3docs

xor

Le mot-clé xor en PHP est un opérateur logique qui retourne TRUE si exactement l'une des deux expressions est TRUE et l'autre est FALSE.

Introduction

Le mot-clé xor en PHP est l'opérateur logique OU exclusif. Il retourne TRUE uniquement lorsque exactement l'un de ses deux opérandes est TRUE et l'autre est FALSE. Si les deux opérandes sont TRUE, ou si les deux sont FALSE, alors xor retourne FALSE. C'est la différence essentielle par rapport à l'opérateur or, qui retourne TRUE chaque fois que l'un ou les deux opérandes sont TRUE.

En termes simples : xor répond à la question « l'un de ces éléments est-il vrai, mais pas les deux ? »

Cette page couvre la table de vérité de xor, un exemple exécutable, sa précédence (et le piège courant qu'elle crée avec l'affectation), et les situations où l'utilisation de xor est véritablement pertinente.

Table de vérité

Le comportement de xor est entièrement décrit par ces quatre cas :

$a$b$a xor $b
TRUETRUEFALSE
TRUEFALSETRUE
FALSETRUETRUE
FALSEFALSEFALSE

Remarquez que le résultat est TRUE uniquement sur les deux lignes « mixtes » — c'est ce qui le rend exclusif.

Exemple

Voici un exemple illustrant l'utilisation de xor en PHP :

Exemple du mot-clé PHP xor

php— editable, runs on the server

Dans l'exemple ci-dessus, l'instruction if sera évaluée à TRUE car $x > 0 est TRUE et $y > 10 est FALSE. Par conséquent, le résultat du code sera : "One of the expressions is true and the other is false".

Il convient de noter que xor a une précédence inférieure à celle des opérateurs and et or, il est donc important d'utiliser des parenthèses pour regrouper correctement les expressions si nécessaire.

Précédence et le piège de l'affectation

Les opérateurs textuels and, or et xor ont tous une précédence inférieure à celle de l'opérateur d'affectation (=). Cela piège souvent les développeurs : dans $result = true xor false, l'affectation se lie en premier, donc PHP l'évalue comme ($result = true) xor false. Le xor est appliqué après que la valeur a déjà été affectée, et son résultat est ignoré.

<?php

// = binds tighter than xor, so this is ($result = true) xor false
$result = true xor false;
var_dump($result); // bool(true)  — the xor never affects $result

// Use parentheses to get the value you expect
$result = (true xor false);
var_dump($result); // bool(true)

$result = (true xor true);
var_dump($result); // bool(false)

La règle générale : lorsque vous souhaitez stocker le résultat d'une expression xor dans une variable, encadrez l'expression avec des parenthèses. Si vous utilisez xor uniquement dans une condition if (comme dans l'exemple ci-dessus), le problème ne se pose pas.

Pour la table de précédence complète et les opérateurs symboliques (&&, ||, !), consultez PHP Operators.

Plus d'informations

Voici quelques informations supplémentaires sur l'opérateur xor en PHP :

  • L'opérateur xor est également appelé opérateur « OU exclusif » car il retourne TRUE uniquement si l'une des expressions est TRUE et l'autre est FALSE, mais pas si les deux sont TRUE ou les deux sont FALSE.
  • L'opérateur xor convertit automatiquement ses opérandes en valeurs boolean avant l'évaluation, selon les règles standard de transtypage de PHP.
  • L'opérateur xor peut être utile dans les situations où vous devez vérifier qu'une seule de deux conditions est vraie, mais pas les deux. Par exemple, si vous avez deux cases à cocher dans un formulaire et que vous souhaitez vous assurer que l'utilisateur n'en sélectionne qu'une seule, vous pouvez utiliser xor pour valider la saisie.
  • Contrairement à and et or, l'opérateur xor ne fait pas de court-circuit ; les deux opérandes sont toujours évalués, quelle que soit la valeur du premier opérande.
  • L'opérateur xor peut être combiné avec d'autres opérateurs tels que == ou != pour créer des expressions plus complexes. Par exemple, vous pouvez utiliser ($x == $y) xor ($a != $b) pour vérifier que soit $x est égal à $y, soit $a est différent de $b, mais pas les deux. De telles expressions sont le plus souvent placées dans une instruction if.
  • Notez que xor est un opérateur logique. Pour les opérations XOR bit à bit (basculement de bits individuels d'un entier), utilisez l'opérateur ^ à la place.
  • Les opérateurs textuels associés sont and et or. PHP fournit également les formes symboliques && et ||, qui ont une précédence plus élevée que leurs équivalents textuels.
  • Il convient de noter que l'opérateur xor n'est pas couramment utilisé en programmation PHP, et vous constaterez peut-être que vous pouvez obtenir les mêmes résultats avec d'autres opérateurs ou structures de contrôle. Cependant, il peut être un outil utile dans certaines situations où vous devez effectuer des opérations logiques sur des valeurs boolean.

Pratique

Pratique
Quelle est la signification de l'opérateur logique XOR (OU exclusif) en PHP ?
Quelle est la signification de l'opérateur logique XOR (OU exclusif) en PHP ?
Was this page helpful?