Tests et boucles
En vidéo :
Conditions
$variable = 1;
if ($variable == 0) {
echo 'ok';
} elseif ($variable == -1) {
echo 'ok aussi';
} else {
echo 'pourquoi pas ?';
}
Equivalent à :
$variable = 1;
switch ($variable) {
case 0:
echo 'ok';
break;
case -1:
echo 'ok aussi';
break;
default:
echo 'pourquoi pas ?';
break;
}
Condition ternaire
Une variante "courte" existe pour les conditions simples.
// Avant le ?, on met notre condition (les parenthèses ne sont pas obligatoires)
// Après le ?, l'instruction à exécuter si la condition est vraie
// Après le :, l'instruction à exécuter si la condition est fausse
($variable === 1) ? echo 'ok' : echo 'pas ok';
// Le code ci-dessus est équivalent à cette structure if/else
if ($variable === 1) {
echo 'ok';
} else {
echo 'pas ok';
}
⚠️ Attention, les conditions ternaires peuvent très vite devenir difficile à relire.
Opérateur de fusion Null
Cet opérateur permet de vérifier l'existence d'une variable et, si elle n'est pas définie, de lui donner une valeur par défaut.
// Si $tab['uneCle'] est définie, $action prendra sa valeur, sinon, $action aura la valeur "default"
$action = $tab['uneCle'] ?? 'default';
// Le code ci-dessus est équivalent à cette structure if/else
if (isset($tab['uneCle'])) {
$action = $tab['uneCle'];
} else {
$action = 'default';
}
Opérateurs courants
a == b
pour tester si les valeurs dea
etb
sont égalesa === b
pour tester si les valeurs dea
etb
sont égales et de même typea != b
pour tester si les valeurs dea
etb
sont différentesa !== b
pour tester si les valeurs dea
etb
sont différentes ou de type différenta > b
pour tester si la valeur dea
est strictement supérieure à celle deb
a >= b
pour tester si la valeur dea
est supérieure ou égale à celle deb
a < b
pour tester si la valeur dea
est strictement inférieure à celle deb
a <= b
pour tester si la valeur dea
est inférieure ou égale à celle deb
a instanceof Object
pour tester sia
est un Objet de typeObject
Boucles
foreach
Une boucle particulière, permettant de facilement parcourir un tableau (ou un objet iterable
).
$elements = [1, 3, 12, 42];
foreach ($elements as $key => $value) {
// 0 : 1 pour la première itération
// 1 : 3 pour la deuxième
// ...
echo $key.' : '.$value;
}
Pour modifier $value
et voir ces modifications appliquer dans le tableau $elements
, il suffit d'un passage par référence.
$elements = [1, 3, 12, 42];
foreach ($elements as $key => &$value) {
$value = $value + 2;
}
// Ce qui est équivalent à
foreach ($elements as $key => $value) {
$elements[$key] = $value + 2;
}
var_dump($elements); // Affichera [3, 5, 14, 44]
for et while
Ces deux boucles sont assez classiques et fonctionnent comme dans beaucoup d'autres langages
$elements = [1, 3, 12, 42];
for ($i = 0; $i < count($elements); $i++) {
$elements[$i] += 2;
}
var_dump($elements); // Affichera [3, 5, 14, 44]
$j = 0;
while ($j < count($elements)) {
$elements[$j] += 2;
$j++;
}
var_dump($elements); // Affichera [5, 7, 16, 46]