4bots

Home
 Edito
 Projets
 Kapharnaüm
 Forums

Contribs
 GraphiK
 ArtiKles
 Prog
PHP, MYSQL
Site Web, DHTML
ASP
C, C++
Visual Basic
Delphi
Java
CGI, Perl
Flash
Game Editing
XML, XHTML, XSL
Coldfusion
DNF
 Tutoriaux
 Rechercher

Goodiez
 ESRA
 Games
 Divers

Download
 Repository

Sheep Corp
 Les Membres
 Foire aux Questions
 Infos sur le site

S'identifier :.

Pseudo

Mot de passe


Membres Connectés
Zéro, nada, pas un sheep.
Paradis
Chose inventé par des gens lâche...non mais...faut se rendre a l'évidence...nous somme libre de créer notre propre enfer ou notre propre paradis...c'est pas quelqu'un d'autre qui va te le donné déjà tous fait … c’est comme les modèles réduits… work on it




taka-s-tiger

Voir l'ESRA
Ajouter une def
Fly with me ! de ahinu
Et on passe pour des fous a vouloir faire voler des moutons

Breaking News! de Merlin
Sheep-team is back... and it's gonna kick asses ! (ou pas...)

Yeah Net de Hawai
[This is the end]

Yeah! de Audiofeline
Sheep-Team.org, un site qui doit bien servir à quelque chose

Optimisation de douceur
Renard de feu trop lent? Allez donc là. Ce site vous propose des versions de Firefox et Thunderbird optimisées pour votre processeur.

Les brèves sheep-team dot org c'est la garantie de goodiz frais repêchés chaque jour dans les marécages yodassiens et vendus par cinq sans conservateurs.

Proposer | Archives
7 ans plus tard
affichage d'un frorum DNF avec chrome
Bonne Année
It's alive !!!!
bug report & evolutions
[Sheep Team] The topic
Plus fort que Ride, le nombre 21!
Concour : sheep sur google
Norme
Requete SQL

Prog . PHP, MYSQL

PHP, les boucles
Tutorial écrit par chapodepay le 5 sept 2004

Retour
tutorial php : les boucles.


Definition :

Une boucle en programmation est une action que l'on va répété un certain nombre de fois prédéfinie ou soumis a condition.
Les boucles sont indispensables pour l'élaboration de script complexe style forum, gestion de fichier, et tout ce qui manipule des series de données.




Pré-acquis :

base du php,
les conditions,
les variables tableaux,
et de préférence les fonctions.




Introduction :

Le php utilise des structures de boucles venant du C (comme les conditions et tant de truc).
instruction break : L'instruction break permet de sortir d'une boucle à tout moment.
=> appel : continue;
instruction continue : L'instruction continue permet de revenir au début de la boucle.
=> appel : continue;



exemple :
<?
for($i=0;is_array($tablo) && isset($tablo[$i]); $i++) {
	if( $tablo[$i] == 'suivant' ) {
		continue;
	}
	if( $tablo[$i] == 'fin' ) {
		break;
	}
}
?>
.
.
les différentes boucles (liste non exaustive) :


boucle for :

for([initialisations]; [condition] ; [action récurrente]){
[instruction]
}


exemple :
nous avons une var tableau définie ainsi :
<?
$tablo = array("toto", "tobi", "valérie", "daniel");
?>
nous allons a l'aide de la boucle for() parcourir et afficher les données contenues dans cette variable.
<?
for($i=0;is_array($tablo) && isset($tablo[$i]); $i++) {
	echo $tablo[$i]."<br>\n";
}


//initialisation : $i=0 car nous démarrons le parcour de cette var a $tablo[0], on aurait pu démarré a $tablo[2]

//condition #1 : is_array($tablo) nous vérifions que $tablo est bien une var tableau, ici pas de doute certe...

//condition #2 : isset($tablo[$i]) nous vérifions que $tablo[$i] existe, soit dénifie, pour arréter notre boucle a la dernier valeur dans $tablo pour éviter les boucles sans fin

//action récurrente : $i++ est une incrémentation de la var $i (+1 a chaque tour), nous sert a parcourir de 1 en 1 les valeur de la var tableau.

//instruction : echo $tablo[$i] va afficher $tablo[$i] qui est la valeur de $tablo parcourue

?>
résultat a l'écran :
toto
tobi
valérie
daniel
résultat coté source :
toto<br>
tobi<br>
valérie<br>
daniel<br>
boucle while :

while( [condition] ){
[instruction]
}

Tant que la condition est définie, la boucle continue... comme dans toute boucle... l'initialisation si il y a besoin doit etre définie préalablement, et y doit y avoir soit une incrémentation en dans le bloc instruction, soit une instruction de sortie de boucle ( breack; )

ATTENTION aux boucles infinies, l'oublie de l'incrémentation ou instruction de sortie et monnaie courante (du moins chez moi )

exemple :
<?
$tablo = array("toto", "tobi", "valérie", "daniel");
$i='0';
while(is_array($tablo) && isset($tablo[$i])) {
	echo $tablo[$i++]."<br>\n";
}
?>
Ici l'incrémentation qui assure le parcoure de la var tableau $tablo et bien réalisé dans l'instruction d'affichage echo ($i++)

Le bloc de condition est identique a l'exemple de la boucle for(), je ne la re-détaillerais pas.

Résultat identique a l'exemple de la boucle for().


boucle do .. while :

La condition de sortie est située en fin de boucle. Ainsi la boucle est parcourue une fois au minimum.
<?
$tablo = array("toto", "tobi", "valérie", "daniel");
$i=0;
do{ 
echo $tablo[$i++]."<br>\n"; 
} while(isset($tablo[$i])); 
?>
Ici encore le résultat est totalement identique aux boucles précédentes, l'intéret ici et que l'instruction est éxécité avant que la condition soit vérifié, soit éxécuté minimum 1 fois... personnellement jamais utilisé. (si vous trouver une utilisation, hésitez pas)

boucle foreach :

Boucle de parcour de variable tableau par exellence, très interressante dans le cas de var tableau multidimensionnelle.
Sans condition autre que celle de parcourrir la var tableau tant qu'elle est définie (identique a une condition isset($tablo[$i]) ).

Nous allons faire les exemple a partir de la var tableau $var_tablo a deux dimensions définie ainsi :
<?
$var_tablo = array("nom" => "pelican", "prenom" => "julien", "adresse" => "pas tres loin de paris");
?>
pour parcourrir une var tableau en prennant seulement la valeur de chaque clef :
<?
foreach($var_tablo AS $valeur){
echo $clef."<br>\n";
}
?>
résultat a l'écran :
pelican
julien
pas tres loin de paris
coté source :
pelican<br>
julien<br>
pas tres loin de paris<br>
pour parcourrir une var tableau en prennant la clef et la valeur:
<?
foreach($var_tablo AS $clef => $valeur){
echo $valeur." : ".$valeur."<br>\n";
}
?>
résultat a l'écran :
nom : pelican
prenom : julien
adresse : pas tres loin de paris
coté source :
nom : pelican<br>
prenom : julien<br>
adresse : pas tres loin de paris<br>
exemple pour une var tableau multi-dimension $zevardeouf :
<?
$zevardeouf = array("président" => array("nom" => "daniel", "departement" => "75016"), "comptable" => array("nom" => "valérie", "departement" => "78200"), "codeur" => array("nom" => "chapodepay", "departement" => "78800") );

foreach($zevardeouf as $clef => $valeur){
	echo "<b>".$clef."</b> : ";
	foreach($zevardeouf[$clef] as $clef2 => $valeur2)
		echo "<li>".$clef2." : ".$valeur2."<br>\n";
}
?>
résultat a l'écran :




coté source :
<b>président</b> : <li>nom : daniel<br>
<li>departement : 75016<br>
<b>comptable</b> : <li>nom : valérie<br>
<li>departement : 78200<br>
<b>codeur</b> : <li>nom : chapodepay<br>
<li>departement : 78800<br>

Voila, je vais m'arreter la dessus, les bases des boucle php sont expliqué et je suis fatigué.
en esperant que ce tuto serve a quelqu'un.

tutorial par chapodepay reproduction interdite sans accord préalable pour sheep-team.org
Infos:

Par: chapodepay
Rubrique: PHP, MYSQL
Appréciation:

Favoris: 0
Commentaires: 4
Popularité:

Vues: 30
Tutorial:

Taille: 23ko
Signaler un problème avec la charte
(copyright, contenu, ...)
Commentaires
chapodepay
Pollueur de forum



Envoyé le:
06/09/04 03:02
Signaler un problème avec la charte
(copyright, contenu, ...)
par contre... y a vraiment un probleme avec la mise en page, les balise code supprime tous les saut de ligne ki suivent leur fermeture...
Merlin
Enchanté...



Envoyé le:
06/09/04 10:51
Signaler un problème avec la charte
(copyright, contenu, ...)
Cool chapo, merci bcp
Seed




Envoyé le:
06/09/04 11:16
Signaler un problème avec la charte
(copyright, contenu, ...)
instruction breack : L'instruction break permet de sortir d'une boucle à tout moment.
=> appel : continue;
instruction continue : L'instruction continue permet de revenir au début de la boucle.
=> appel : breack;

C'est moi ou il y a une erreur?

Sinon l'instruction continue ne permet en aucun cas de revenir au début de la boucle!
Elle permet simplement de passer à l'iteration suivante. (on appelle bien ca une iteration? non? bon passer à l'instruction suivante de la boucle)
<?
foreach($var_tablo AS $valeur){
echo $clef."<br>\n";
}
?>
un problème?

Bon sinon je peux chipoter?
<?
for($i=0;is_array($tablo) && isset($tablo[$i]); $i++) {
	echo $tablo[$i]."<br>\n";
}
?>
Je trouve inutile de tester à chaque iteration si $tablo est un tableau s'il l'est il ne changera pas pendant la boucle.
<?
foreach($var_tablo AS $clef => $valeur){
echo $clef." : ".$valeur."<br>\n";
}
//equivalent à

while(list($clef,$val) = each($var_tablo))
echo $clef." : ".$val."<br/>\n";
?>
Préferez le foreach c'est plus court et plus simple ... enfin vous avez le choix

et pour finir
<?php
foreach($zevardeouf as $clef => $valeur){
	echo "<b>".$clef."</b> : ";
	foreach($zevardeouf[$clef] as $clef2 => $valeur2)
		echo "<li>".$clef2." : ".$valeur2."<br>\n";
}
?>
ca me parait pas très logique d'utiliser $zevardeouf[$clef] alors que tu viens de l'affecter à $valeur...

chapodepay
Pollueur de forum



Envoyé le:
06/09/04 11:37
Signaler un problème avec la charte
(copyright, contenu, ...)
seed>

#1-#2>corrigé
#3> peut etre, mais sinon tu doit la mettre avant donc... et c des exemples simplifié
#4>
Préferez le foreach c'est plus court et plus simple

pour chak exemple donné il y a plusieur solution de remplacement, je fais pas un tuto sur la fonction list() alors pourkoi j'aurais mis un exemple sans foreach dedans?
#5> certe, mais c bien plus compréhensible comme cela
Up!
© 2012 Sheep Team. Tous droits réservés.
Toute reproduction même partielle est interdite sans l'accord exprès, préalable et écrit de tous les auteurs concernés. Charte.