W3docs

if

Le mot-clé "if" en PHP permet d'exécuter du code conditionnellement. Découvrez la syntaxe et l'utilisation de l'instruction "if" en PHP.

L'instruction PHP if

L'instruction if est la façon dont un programme PHP prend des décisions. Elle exécute un bloc de code uniquement lorsqu' une condition est vraie, et le saute sinon. Sans elle, un script exécuterait chaque ligne de haut en bas sans possibilité de bifurquer — if est le fondement de toute logique conditionnelle en PHP.

Ce guide couvre la syntaxe, la façon dont PHP détermine si une condition est « vraie », la famille else/elseif, la syntaxe alternative endif pour les templates, les raccourcis comme les opérateurs ternaire et null-coalescing, ainsi que les erreurs qui piègent les débutants.

Syntaxe de base

if (condition) {
  // code that runs only when condition is true
}

La condition est toute expression que PHP peut évaluer à vrai ou faux. Si elle est vraie, le code à l'intérieur des accolades s'exécute ; si elle est fausse, PHP saute le bloc et continue après lui.

<?php
$age = 20;

if ($age >= 18) {
  echo "You are an adult.";
}
// Output: You are an adult.

Les accolades sont optionnelles lorsque le corps est une seule instruction, mais utilisez-les toujours — omettre les accolades est une source courante de bogues, car seule la première instruction est traitée comme le corps :

if ($age >= 18)
  echo "Adult";        // runs conditionally
  echo " — welcome";   // ⚠️ runs ALWAYS, it is not part of the if

Comment PHP évalue les conditions (truthy et falsy)

Une condition n'a pas besoin d'être un littéral true/false — PHP convertit toute valeur en booléen. Ces valeurs sont falsy (traitées comme fausses) :

  • false
  • 0 et 0.0
  • "" (chaîne vide) et "0"
  • null
  • un tableau vide []

Toute autre valeur est truthy. Cela permet d'écrire des vérifications compactes :

<?php
$name = "";

if ($name) {
  echo "Hello, $name";
} else {
  echo "No name provided.";   // empty string is falsy
}
// Output: No name provided.

Pour construire des conditions, vous utilisez généralement des opérateurs de comparaison et logiques. Consultez PHP Operators pour la liste complète.

<?php
$temp = 30;

if ($temp > 25 && $temp < 35) {     // logical AND
  echo "Warm but comfortable.";
}
// Output: Warm but comfortable.

Ajouter else et elseif

if seul gère un seul chemin. Pour fournir une alternative, ajoutez un else ; pour tester plusieurs conditions dans l'ordre, enchaînez des elseif :

<?php
$score = 72;

if ($score >= 90) {
  echo "Grade: A";
} elseif ($score >= 70) {
  echo "Grade: B";
} elseif ($score >= 50) {
  echo "Grade: C";
} else {
  echo "Grade: F";
}
// Output: Grade: B

PHP vérifie chaque condition de haut en bas et exécute le premier bloc dont la condition est vraie, puis s'arrête. Puisque $score vaut 72, le test >= 90 échoue, >= 70 réussit, et le reste est ignoré.

Pour des chapitres dédiés à ces notions, consultez PHP else, PHP elseif, et le parcours combiné if...elseif...else. Lorsque vous avez plusieurs valeurs fixes à comparer avec une variable, une instruction switch est souvent plus claire.

Imbriquer des instructions if

Vous pouvez placer un if à l'intérieur d'un autre pour tester une deuxième condition uniquement lorsque la première est passée :

<?php
$loggedIn = true;
$role = "admin";

if ($loggedIn) {
  if ($role === "admin") {
    echo "Welcome to the admin panel.";
  } else {
    echo "Welcome back.";
  }
}
// Output: Welcome to the admin panel.

L'imbrication profonde nuit à la lisibilité — si vous vous retrouvez à trois niveaux de profondeur, envisagez de combiner les conditions avec && ou de retourner tôt.

Syntaxe alternative (if: / endif)

Lors du mélange de PHP avec du HTML dans des templates, la forme avec deux-points et endif est plus facile à lire que des accolades éparpillées :

<?php if ($loggedIn): ?>
  <p>Welcome back!</p>
<?php else: ?>
  <p>Please log in.</p>
<?php endif; ?>

Cela se comporte exactement comme la version avec accolades ; c'est purement une question de style pour les fichiers de vue.

Raccourcis : ternaire et null coalescing

Pour les affectations simples « soit/soit », l'opérateur ternaire condense un if/else en une seule ligne :

<?php
$age = 16;
$status = ($age >= 18) ? "adult" : "minor";
echo $status;
// Output: minor

Lorsque vous vous souciez uniquement de savoir si une valeur existe (et n'est pas null), l'opérateur null-coalescing ?? est plus propre qu'un if (isset(...)) :

<?php
$config = [];
$timeout = $config["timeout"] ?? 30;   // use 30 if the key is missing
echo $timeout;
// Output: 30

Exemples pratiques

<?php

// Example 1
$num = 10;

if ($num > 5) {
  echo "The number is greater than 5." . PHP_EOL;
}

// Output: The number is greater than 5.

// Example 2
$color = "red";

if ($color == "blue") {
  echo "The color is blue.";
} else {
  echo "The color is not blue.";
}

// Output: The color is not blue.

Erreurs courantes

  • = à la place de ==. if ($x = 5) affecte 5 à $x et est toujours truthy. Utilisez == (souple) ou === (strict, sans conversion de type) pour comparer.
  • == contre ===. Avec ==, 0 == "hello" et "1" == 1 peuvent vous surprendre car PHP convertit les types. Préférez === lorsque les types doivent correspondre.
  • Accolades manquantes autour d'un corps multi-ligne — seule la première instruction est conditionnelle.
  • Confusion avec les valeurs truthy. if ($value) est faux pour 0, "" et [] ; utilisez isset() ou === null lorsque vous voulez spécifiquement dire « est-ce que cela existe ».

Conclusion

L'instruction if permet à un programme PHP de choisir quoi faire à l'exécution. Maîtrisez les règles truthy/falsy, utilisez elseif/else pour gérer plusieurs chemins, adoptez la syntaxe alternative endif dans les templates, et appuyez-vous sur les opérateurs ternaire et ?? pour des affectations concises. À partir de là, explorez les boucles PHP pour répéter des actions et l'instruction switch pour la bifurcation basée sur des valeurs.

Pratique

Pratique
En PHP, comment pouvez-vous faire décider au programme quel bloc de code exécuter ?
En PHP, comment pouvez-vous faire décider au programme quel bloc de code exécuter ?
Was this page helpful?