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 == bpour tester si les valeurs deaetbsont égalesa === bpour tester si les valeurs deaetbsont égales et de même typea != bpour tester si les valeurs deaetbsont différentesa !== bpour tester si les valeurs deaetbsont différentes ou de type différenta > bpour tester si la valeur deaest strictement supérieure à celle deba >= bpour tester si la valeur deaest supérieure ou égale à celle deba < bpour tester si la valeur deaest strictement inférieure à celle deba <= bpour tester si la valeur deaest inférieure ou égale à celle deba instanceof Objectpour tester siaest 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]
