Plusieurs types de boucles :
// « while »
while (<condition>) {
<instructions>;
}
//« do-while »
do {
<instructions>;
} while (<condition>)
L’instruction while correspond à un tant que… Attention à la condition de sortie et à l’incrémentation du compteur éventuel !!! L’instruction do-while est particulière, le premier test de sortie de la boucle n’est ici réalisé qu’après une première exécution de la boucle.
<?php
$i=0;
while ( $i <= 10) {
echo $i . "<br>";
$i++;
}
echo '<hr>';
$j=0;
do {
echo $j . "<br>";
$j++;
} while ($j < 0);
//« for »
for (<expr1>; <condition>; <expr2>) {
<instructions>;
}
L’instruction « for » comporte trois paramètres :
<?php
for($i=0;$i<=10;$i++)
echo $i . '. <br />';
//« foreach »
foreach ($array as $element) {
<instructions>;
}
La commande « foreach » est un moyen simple de parcourir un à un les éléments d’un tableau. Deux syntaxes sont possibles.
Dans cette première syntaxe, il s’agit de parcourir le tableau $array. A chaque itération, l’élément courant est assigné à la variable $element, et le pointeur interne de tableau est avancé d’une position (à la prochaine itération, on accédera à l’élément suivant).
<?php
for($i=0;$i<=10;$i++)
echo $i . '. <br />';
//« foreach » Syntaxe 2 :
foreach ($array as $key=>$element) {
<instructions>;
}
<?php
$tableau = array(2, 4, 6, 8, "chien", 'chat', 10);
foreach ($tableau as $elt) {
echo $elt . "<br>";
}
<?php
$livre = array(
"titre" => "Le Banquet",
"auteur" => 'Platon',
"origine" => "Grèce",
"type" => "philosophie");
foreach ($livre as $clef => $valeur) {
echo $clef . " : " . $valeur . "<br>";
}
foreach, travaille sur une « copie » du tableau
Depuis PHP5, possible d’attaquer le tableau lui-même, en utilisant le « & »
<?php
$tab = array(1, 2, 3);
foreach($tab as $valeur) {
$valeur = $valeur - 1;
}
echo $tab[0] + $tab[1] + $tab[2]; // affiche 6
foreach($tab as &$valeur) {
$valeur = $valeur - 1;
}
echo $tab[0] + $tab[1] + $tab[2]; // affiche 3
?>
Break :
Continue :
En PHP, écrivez un script qui permette d’afficher, dans une page web, le contenu de votre « documentroot »
NB : voici quelques fonctions utiles :
* $pointeur = opendir("nom répertoire") : retourne un pointeur sur un dossier
* $nomFichier = readdir($pointeur) : retourne le nom du fichier suivant dans le dossier identifié par le pointeur.
* closedir($pointeur) : ferme le pointeur
* $_SERVER
<?php
$dir = opendir($_SERVER['DOCUMENT_ROOT']) or die('Erreur de listage : le répertoire n\'existe pas'); // on ouvre le contenu du dossier courant
while($element = readdir($dir)) {
if($element != '.' && $element != '..') {
echo $element."<br />";
}
}
closedir($dir);
/**
* Version Oo avec les classes de la SPL
*/
foreach (new DirectoryIterator($_SERVER['DOCUMENT_ROOT']) as $fileInfo) {
/**
* isDot() vérifie le . et ..
*/
if(!$fileInfo->isDot()){
echo $fileInfo->getFilename() . "<br>\n";
}
}