Les conditions (2e partie)

Article écrit par kazhar

Un des principaux avantages de l'informatique, en général, est de permettre d'automatiser des taches fastidieuses. Imaginons que nous voulions écrire tous les entiers inferieurs à 5.
Il serait dommage de devoir écrire:

Code :
<?php
echo "0";
echo "1<br />";
echo "2<br />";
echo "3<br />";
echo "4<br />";
echo "5<br />";
?>



L'informatique a créé, pour ce genre de besoin, la notion de boucle.

WHILE
while est une boucle qui permet d'écrire:
TANT QUE testest vrai FAIRE action

Code :
<?php
$i = 0;
while ($i <5)
{
echo "$i<br />":
$i++;
}
echo "<br />fin de boucle";
?>


affichera sur notre page :
0
1
2
3
4

fin de la boucle


Faites attention lorsque vous travaillez avec une boucle while à ne pas vous retrouver dans une boucle infinie. Cela aurait été le cas si nous avions oublié la ligne $i++. En effet, dans ce cas, la variable aurait gardé la valeur 0 et la boucle while aurait affiché "0" eternellement......


Comme pour les conditions, le test peut etre complexe:

Code :
<?php
$i = 1;
while (($n != 121) && ($i <100))
{
$n = $i * $i;
echo "i = $i, n= $n<br>";
$i++;
}
?>



afficherait sur notre page :
i = 1, n= 1
i = 2, n= 4
i = 3, n= 9
i = 4, n= 16
i = 5, n= 25
i = 6, n= 36
i = 7, n= 49
i = 8, n= 64
i = 9, n= 81
i = 10, n= 100
i = 11, n= 121


DO...WHILE
Une variante existe au while: le do...while. il ne sagit plus d'un tant que...faire mais d'un faire...tant que. Dans ce cas, le code de la boucle est donc au moins executé une fois:

Code :
<?php
$i = 6;
do
{
echo $i;
}
while ($i<5);
?>



Bien que $i contienne la valeur 6 et que le test soit $i<5, le code est bien executé une fois.

FOR
La syntaxe de la boucle for est la suivante:
for (expression1; expression2; expression3)

- expression 1 est l'instruction initiale avant la première itération;
- expression 2 est le test réalisé au début pour chaque itération;
- expression 3 est l'instruction éxécutée à la fin de chaque itération.

Ainsi, l'équivalent de cette boucle while est la boucle for suivante:

Code :
<?php
$i = 0;
while ($i <= 10)
{
echo "$i <br>";
$i++;
}
?>

<?php
for ($i = 0; $i<=10; $i++)
{
echo "$i<br>";
}
?>



La boucle for permet donc de condenser les principaux éléments d'une boucle au sein d'une meme ligne.

FOREACH
PHP propose une espece de for spécialement dédié aux tableaux: le foreach. Il pourrait etre traduit ainsi:
Pour chaque élément du tableau, faire

Code :
<?php
$tab = array ("a"; "b", "c", "d");
foreach ($tab as $val)
{
echo "$val ";
}
?>



s'il s'agit d'un tableau associatif, il faut alors écrire:

Code :
<?php
$tab = array("prenom" => "paul", "nom" => "dupont");
foreach ($tab as $indice => $valeur) { echo "$indice = $valeur";
} ?>


qui affichera sur notre page :
prenom = paul nom = dupont

Source : http://www.phportail.net