Temps de lecture approximative : 12 minutes

Les conditions - PHP

Les structures conditionnelles ou tout simplement les conditions permettent d'exécuter une partie de code selon si une condition est vérifiée ou non. Par exemple, sur un site e-commerce, on peut finaliser une commande si le panier contient au moins un article. Les conditions s'utilisent principalement avec des variables. C'est une notion qui peut paraître déroutante au premier abord, mais qui est extrêmement importante pour votre apprentissage du PHP. Il est indispensable de maîtriser cette notion pour développer efficacement en PHP.

L'instruction if

En PHP, la condition la plus minimaliste possible requiert l'instruction if. En français, on peut tout simplement traduire cette instruction par si.
Ci-après la syntaxe d'une condition if.

PHP
<?php
   $a = 2;
   if($a > 1)
      echo 'La variable $a est plus grand que 1.';
?>
Résultat
La variable $a est plus grand que 1.

Nous avons donc l'instruction if puis entre parenthèses le test de la condition. Chaque test est converti en valeur booléenne. Par conséquent, si le test vaut true, alors le PHP exécutera le code à l'intérieur de la condition, si le test vaut false, alors il sera ignoré. Il est possible de faire tout un tas de tests complètement différents avec divers opérateurs de comparaisons qui remplissent des fonctions bien différentes. Nous resterons pour le moment sur des opérateurs triviaux comme < ou >.

Il n'est pas rare d'avoir plusieurs lignes d'instructions au sein d'une condition. Si c'est le cas, une autre syntaxe est à utiliser. Il est tout à fait possible d'utiliser cette syntaxe pour une seule ligne d'instruction. Ci-après deux syntaxes équivalentes.

PHP
<?php
   $a = 2;
   if($a > 1) {
      echo 'La variable $a est plus grand que 1.';
      $b = 0;
   }
?>
Résultat
La variable $a est plus grand que 1.
PHP
<?php
   $a = 2;
   if($a > 1):
      echo 'La variable $a est plus grand que 1.';
      $b = 0;
   endif;
?>
Résultat
La variable $a est plus grand que 1.

La première syntaxe délimite le bloc d'instructions à exécuter si le test de la condition est vérifié entre { et } (accolades ouvrante et fermante). Tandis que la syntaxe alternative, délimite le bloc d'instructions entre : (deux points) et endif;. Les deux syntaxes fonctionnent mais la première est plus répandue.

Il est possible d'imbriquer les conditions. La syntaxe des instructions if n'est pas impactée. Ci-dessous un exemple.

PHP
<?php
   $a = 2;
   if($a > 1) {
      echo 'La variable $a est plus grand que 1.';
      $b = 0;
      if($b < 2) {
         echo '<br />La variable $b est plus petite que 2.'; 
      }
   }
?>
Résultat
La variable $a est plus grand que 1.
La variable $b est plus petite que 2.
PHP
<?php
   $a = 2;
   if($a > 1) :
      echo 'La variable $a est plus grand que 1.';
      $b = 0;
      if($b < 2) :
         echo '<br />La variable $b est plus petite que 2.'; 
      endif;
   endif;
?>
Résultat
La variable $a est plus grand que 1.
La variable $b est plus petite que 2.

Dans l'exemple ci-dessus, si la valeur de la variable $a est de 0 ou 1, alors rien ne s'affiche car la première condition n'est pas vérifiée.

L'instruction else

Il n'est pas rare de vouloir exécuter une instruction si un test de condition est vérifié et une autre si ce n'est pas le cas. Et klac, c'est justement le rôle de l'instruction else. Elle est toujours associée à un if. Donc les instructions contenues dans le else sont exécutées uniquement si le test de condition du if n'est pas vérifié. On peut traduire en français cette instruction par sinon. Un exemple sans plus attendre.

PHP
<?php
   $a = 2;
   if($a > 1) {
      echo 'La variable $a est plus grand que 1.';
   } else {
      echo 'La variable $a est plus petit ou égale à 1.';
   }
?>
Résultat
La variable $a est plus grand que 1.
PHP
<?php
   $a = 2;
   if($a > 1) :
      echo 'La variable $a est plus grand que 1.';
   else :
      echo 'La variable $a est plus petit ou égale à 1.';
   endif;
?>
Résultat
La variable $a est plus grand que 1.
PHP
<?php
   $a = 1;
   if($a > 1) {
      echo 'La variable $a est plus grand que 1.';
   } else {
      echo 'La variable $a est plus petit ou égale à 1.';
   }
?>
Résultat
La variable $a est plus petit ou égale à 1.
PHP
<?php
   $a = 1;
   if($a > 1) :
      echo 'La variable $a est plus grand que 1.';
   else :
      echo 'La variable $a est plus petit ou égale à 1.';
   endif;
?>
Résultat
La variable $a est plus petit ou égale à 1.

L'instruction elseif

Comme son nom l'indique, l'instruction elseif est une combinaison de l'instruction if et else. Le bloc d'instruction du elseif est exécuté uniquement si le test de condition du premier if n'est pas vérifié et vaut donc false. Seulement, à la différence de else, le bloc d'instruction du elseif ne s'exécutera que si le test de sa condition est vérifié et vaut donc true.

PHP
<?php
   $a = 5;
   if($a < 1) {
      echo 'La variable $a est plus petit que 1.';
   } elseif($a > 4) {
      echo 'La variable $a est plus grand que 4.';
   } else {
      echo 'La variable $a est entre 1 et 4.';
   }
?>
Résultat
La variable $a est plus grand que 4.
PHP
<?php
   $a = 5;
   if($a < 1) :
      echo 'La variable $a est plus petit que 1.';
   elseif($a > 4) :
      echo 'La variable $a est plus grand que 4.';
   else :
      echo 'La variable $a est entre 1 et 4.';
   endif;
?>
Résultat
La variable $a est plus grand que 4.

Si on souhaite vulgariser l'exemple ci-dessus et l'exprimer oralement, on pourrait dire :

  • Si la variable $a est strictement inférieure à 1 alors, ...
  • Sinon si la variable $a est strictement supérieure à 4 alors, ...
  • Sinon, ...

Après un premier if, il est possible d'avoir plusieurs elseif les uns à la suite des autres. Le premier elseif qui sera vérifié et qui sera évalué à true sera exécuté.

Les opérateurs de comparaison

Depuis le début du chapitre nous utilisons très largement le chevron comme opérateur de comparaison qui permet de tester si une valeur est strictement supérieure ou inférieure à une autre. Il existe bien évidemment d'autres opérateurs de comparaison. Ceux que nous utiliserons dans le cours sont listés dans le tableau ci-après.

Opérateur Description Exemple
== true si la valeur est égale à $a == $b
!= true si la valeur est différente de $a != $b
> true si la valeur est strictement supérieure à $a > $b
< true si la valeur est strictement inférieure à $a < $b
>= true si la valeur est supérieure ou égale à $a >= $b
<= true si la valeur est inférieure ou égale à $a <= $b

Nous utiliserons dans l'exemple ci-dessous la fonction var_dump() pour voir comment se comportent les tests de conditions.

PHP
<?php
   $a = 5;
   $b = 10;
   var_dump($a == $b);
   var_dump($a != $b);
   var_dump($a > $b);
   var_dump($a < $b);
   var_dump($a >= $b);
   var_dump($a <= $b);
?>
Résultat
bool(false)
bool(true)
bool(false)
bool(true)
bool(false)
bool(true)

Les opérateurs logiques

En PHP, les opérateurs logiques sont utilisés pour combiner des tests de conditions. Grâce à ces opérateurs, il est possible d'ajouter plus d'un test de condition dans une seule instruction if. Ci-après un exemple pour les utiliser.

Opérateur Description Exemple
&& true seulement si tous les tests de condition sont évalués à true $a && $b
|| true seulement si l'un des tests de condition est évalué à true $a || $b
! Inverse la logique d'un test de condition !$a
PHP
<?php
   $a = 10;
   $b = 5;
   $c = 0;

   if($a && $b && $c)
     echo 'Les variables $a, $b et $c contient des valeurs différentes de false.<br />';
   else
     echo 'Une des variables $a, $b ou $c contient false comme valeur.<br />';

   if($a >= 10 || $b >= 10 || $c >= 10)
     echo 'Une des variables $a, $b ou $c a une valeur supérieure ou égale à 10.<br />';
   else
     echo 'Aucune des variables $a, $b ou $c ne contient une valeur supérieure ou égale à 10.<br />';

   if(!$c)
      echo 'La variable $c a une valeur équivalente à false.';
   else
      echo 'La variable $c a une valeur équivalent à true.';
?>
Résultat
Une des variables $a, $b ou $c contient false comme valeur.
Une des variables $a, $b ou $c a une valeur supérieure ou égale à 10.
La variable $c a une valeur équivalente à false.