
Synthaxe :
if(expression)
{ bloc de commandes }
else
{ bloc de commandes }
Il y a aussi le « elseif », combinaison du if et du else. Le elseif en un mot peut aussi s'écrire en deux mots : le résultat est le même. On peut écrire des elseif en chaîne. Le premier dont l'expression est vrai est exécuté.
If(expression)
{ bloc de commandes }
elsif(expression)
{ bloc de commandes }
elsif(expression)
commande ou { bloc de commandes }
...
On peut placer du HTML comme commande ou dans le bloc de commande :
<?php
if ($a == 5) {
?>
A = 5
<?php
}
?>
On peut aussi utiliser une syntaxe alternative : on ouvre le bloc (juste après le if, le else ou le elseif) avec les « : » deux points,et on ferme l'instruction avec « endif ».
<?php
if ($a == 5):
print "a = 5";
print "...";
elseif ($a == 6):
print "a = 6";
print "!!!";
else:
print "a ne vaut ni 5 ni 6";
endif;
?>
C'est la boucle « tant que » simple : tant que la condition n'est pas vraie, on continue la boucle. L'expression est placée en début de boucle : si l'expression est fausse avant de rentrer dans la boucle, la boucle n'est pas exécutée.
Synthaxe :
while(expression)
{ bloc de commandes }
On peut aussi utiliser la syntaxe alternative:
while(expression):
{ bloc de commandes }
endwhile
C'est la seconde possibilité. Dans ce cas la commande ou le bloc de commande est exécutée au moins une fois, car l'expression conditionnelle est testée en fin de boucle.
Synthaxe :
do
{ bloc de commandes }
while(expression);
NB: il ne faut pas oublier le point-virgule (;) à la fin de while.
Le « for » du PHP est identique au « for » du C.
for(expr1;expr2;expr3)
{ bloc de commandes }
« expr1 » est exécutée à la première entrée dans la boucle. « expr2 » est exécutée à chaque début d'itération jusqu'à ce que l'expression soit fausse auquel cas on sort de la boucle. « expr3 » est exécutée à la fin de l'itération.
L'usage habituel d'une telle boucle est de placer l'état initial en expr1, la condition de sortie en expr2 et le calcul en expr3. Mais on peu effectuer toutes sortes de choses.
<?php
// de 1 à 10
for ($i = 1; $i <= 10; print $i, $i++)
// infini
for(;;)
// de 1 à 10
for ($i = 1; $i <= 10; print $i, $i++) ;
?>
On peut employer une syntaxe alternative avec le « : » et « endfor ».
for(expr1;expr2;expr3):
{ bloc de commandes }
endfor
La boucle « foreach » est peut-être l'une des plus intéressantes pour la manipulation de tableaux ou de résultats de requêtes SQL. Elle permet de lister les tableaux. Elle dispose de deux syntaxes.
foreach(array_expression as $value)
commandes
foreach(array_expression as $key => $value)
commandes
La première syntaxe récupère les éléments du tableau un par un, séquentiellement. La valeur de l'élément courant du tableau est placée dans la variable $value.
La seconde syntaxe est presque identique, sauf qu'en plus la clé (l'index) de l'élément actuel est placée dans la variable $key.
Attention : modifier la valeur de $value (ou de $key) ne modifie pas le tableau car cette boucle travaille sur une copie, pas une référence. Par contre dans le second cas, comme on dispose de la clé, rien n'empêche d'assigner quoi que ce soit à l'élément courant.
Remarque : un appel à foreach « rembobine » automatiquement le tableau à son premier élément. Mais pas dans les autres boucles, il faut alors utiliser « reset ».
<?php
reset($arr);
while (list(, $value) = each ($arr)) {
echo "Valeur: $value<br>\n";
}
foreach ($arr as $value) {
echo "Valeur: $value<br>\n";
}
$a = array (
"un" => 1,
"deux" => 2,
"trois" => 3,
"dix-sept" => 17
);
foreach($a as $k => $v) {
print "\$a[$k] => $v.\n";
}
?>
L'instruction « break » permet de sortir d'un for, while, foreach ou switch. On peut lui indiquer de combien de structures on souhaite sortir si elles sont emboîtées.
L'instruction « continue » permet de passer à l'itération suivante. Attention PHP conside le switch comme une boucle, et dans ce cas, réévalue le switch. On peut indiquer à continue combien de structures emboîtées relancer.
<?php
switch ($i) {
case 0:
print "i egale 0";
break;
case 1:
print "i egale 1";
break;
case 2:
print "i egale 2";
break;
default:
print "i est inférieur à 0 ou supérieur à 2 ";
}
?>
Le switch s'arrête à la première expression case vraie puis exécute le code suivant dans l'ordre indiqué, jusqu'à la première instruction break. S'il n'y a pas de break, tout le code jusqu'à la fin du switch est exécuté. Dans l'exemple suivant, si $i vaut 0, tous les print seront affichés
<?php
switch ($i) {
case 0:
print "i egale 0";
case 1:
print "i egale 1";
case 2:
print "i egale 2";
}
?>
Notez aussi que le default doit intervenir en dernier, sinon il n'a aucun intérêt. Enfin on peut employer une syntaxe alternative avec « : » et « endswitch ».
<?php
switch ($i):
case 0:
print "i egale 0";
break;
case 1:
print "i egale 1";
break;
endswitch
?>
Contrairement à d'autres langages, « return » n'est pas une fonction mais une instruction. Dans une fonction, return sert à sortir de celle-ci et à retourner une valeur. Dans un script, elle sort de celui-ci. Attention cependant dans les scripts inclus (voir require et include) : le return dans ce type de code considère qu'il sort de la fonction « require » ou « include » et donc ne sort pas du script ou de la fonction dans lesquels ce code a été inclus !
Comme return est un élément du langage et pas une fonction il n' y a pas besoin d'utiliser les parenthèses.
« require » et « include » incluent à l'endroit actuel et exécutent le fichier PHP. Ils sont identiques dans leur fonctionnement à une exception : le traitement des erreurs. Un include produit un « warning » (le code continue en principe à s'exécuter) tandis qu'un require produit une « erreur fatale » (l'exécution s'arrête).
Comme require et include sont des éléments du langage et pas des fonctions il n'y a pas besoin d'utiliser les parenthèses. « require_once » et « include_once » ressemblent à leurs homologues avec cependant une différence. Quoi qu'il arrive, le fichier est inclus une seule fois. Si un second « require_once » apparaît avec le même fichier, l'instruction ne sera pas exécutée.