Temps de lecture approximative : 12 minutes
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.
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
$a = 2;
if($a > 1)
echo 'La variable $a est plus grand que 1.';
?>
Résultat
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
$a = 2;
if($a > 1) {
echo 'La variable $a est plus grand que 1.';
$b = 0;
}
?>
Résultat
<?php
$a = 2;
if($a > 1):
echo 'La variable $a est plus grand que 1.';
$b = 0;
endif;
?>
Résultat
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
$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
<?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
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.
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
$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
<?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
<?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
<?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
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
$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
<?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
Si on souhaite vulgariser l'exemple ci-dessus et l'exprimer oralement, on pourrait dire :
$a
est strictement inférieure à 1 alors, ...$a
est strictement supérieure à 4 alors, ...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é.
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
$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
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
$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