Logical Operators Part 2
Fait partie de la section Fondamentaux du Journey PHP de Coddy — leçon 26 sur 71.
L'opérateur NOT (!) inverse une valeur booléenne en son opposé. Si quelque chose est true, cela devient false, et vice versa :
<?php
$isLoggedIn = false;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)
$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>Vous pouvez combiner plusieurs opérateurs logiques dans une seule expression. Lorsque vous le faites, utilisez des parenthèses pour rendre vos intentions claires :
<?php
$age = 25;
$hasTicket = true;
$isVIP = false;
// Peut entrer si : a un billet ET (est adulte OU est VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>Sans parenthèses, && est évalué avant ||. Cependant, l'utilisation de parenthèses rend votre code plus facile à lire et prévient les erreurs. Quand vous combinez des opérateurs, regroupez toujours les conditions logiquement pour exprimer exactement ce que vous voulez dire.
Défi
FacileLisez quatre valeurs depuis l'entrée : un entier temperature, une chaîne isRaining (soit "true" ou "false"), une chaîne hasUmbrella (soit "true" ou "false"), et une chaîne hasRaincoat (soit "true" ou "false").
Convertissez les valeurs de chaîne en booléens en les comparant à "true".
Évaluez les trois conditions suivantes et affichez le résultat de chacune en utilisant var_dump(), chacune sur une nouvelle ligne :
- Vérifiez s'il NE pleut PAS (utilisez l'opérateur
!) - Vérifiez si la personne devrait rester à l'intérieur : il pleut ET ils n'ont ni parapluie ni imperméable (utilisez
!avec les deux articles) - Vérifiez si la personne peut sortir confortablement : la température est au moins 15 ET (il ne pleut pas OU ils ont un parapluie ou un imperméable)
Exemple :
Si les entrées sont 20, true, false, et true, la sortie devrait être :
bool(false)
bool(false)
bool(true)Explication :
!isRaining→ !true → falseisRaining && !hasUmbrella && !hasRaincoat→ true && true && false → falsetemperature >= 15 && (!isRaining || hasUmbrella || hasRaincoat)→ true && (false || false || true) → true && true → true
Aide-mémoire
L'opérateur NOT (!) inverse une valeur booléenne en son opposé :
<?php
$isLoggedIn = false;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)
$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>Vous pouvez combiner plusieurs opérateurs logiques dans une seule expression. Utilisez des parenthèses pour rendre vos intentions claires :
<?php
$age = 25;
$hasTicket = true;
$isVIP = false;
// Can enter if: has ticket AND (is adult OR is VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>Sans parenthèses, && est évalué avant ||. Cependant, l'utilisation de parenthèses rend votre code plus facile à lire et prévient les erreurs.
Essayez vous-même
<?php
// Lire les valeurs d'entrée
$temperature = intval(fgets(STDIN));
$isRainingStr = trim(fgets(STDIN));
$hasUmbrellaStr = trim(fgets(STDIN));
$hasRaincoatStr = trim(fgets(STDIN));
// TODO: Convertir les valeurs de chaîne en booléens en les comparant à "true"
// TODO: Évaluer et imprimer les trois conditions en utilisant var_dump():
// 1. Vérifier s'il ne pleut pas
// 2. Vérifier si la personne devrait rester à l'intérieur (pleut ET pas de parapluie ET pas d'imperméable)
// 3. Vérifier si la personne peut sortir confortablement
?>Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators