Les boucles ============ Plusieurs types de boucles : * while * do-while * for * foreach While - do-while ----------------- .. code-block:: php // « while » while () { ; } //« do-while » do { ; } while ()‏ 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. .. literalinclude:: file/boucle1.php :language: php For ---- .. code-block:: php //« for » for (; ; ) { ; } L’instruction « for » comporte trois paramètres : - : est l’instruction qui est exécutée une fois à l’entrée de la boucle pour l’initialiser; - : est l’expression booléenne qui est testée avant de (re-)passer dans la boucle - : est l’instruction qui est exécutée à la fin de chaque passage dans la boucle. Souvent, on y incrémente le compteur. .. literalinclude:: file/boucle2.php :language: php Foreach ------- .. code-block:: php //« foreach » foreach ($array as $element) { ; } 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). .. literalinclude:: file/boucle2.php :language: php .. code-block:: php //« foreach » Syntaxe 2 : foreach ($array as $key=>$element) { ; } .. literalinclude:: file/boucle3.php :language: php .. literalinclude:: file/boucle4.php :language: php foreach, travaille sur une « copie » du tableau Depuis PHP5, possible d’attaquer le tableau lui-même, en utilisant le « & » .. literalinclude:: file/boucle5.php :language: php Break et continue ----------------- **Break :** * Permet d’interrompre une boucle ou un switch * Break peut prendre un argument numérique pour indiquer combien de structures emboîtées ont été interrompues **Continue :** * Permet d’accéder directement à l’itération suivante de la boucle, en sautant les instructions de fin * Continue peut prendre un argument numérique pour indiquer combien de structures emboîtées ont été ignorées Exercices --------- .. configuration-block:: .. code-block:: php-annotations 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 .. code-block:: php "; } } 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() . "
\n"; } }