While
L'instruction while permet de réaliser une action tant qu'une condition est vraie.
Exemple : Affiche les nombres de 1 à 10
<?php
$i = 1;
while ($i <= 10) {
echo $i;
$i++;
}
La boucle s’exécute tant que $i est inférieure ou égale à 10.
De 1 à 10, il y a donc 10 tours.
A chaque tour :
echo $i // affiche la valeur de $i
$i++ // augmente de 1 la valeur de $i
Exemple : Affiche les nombres de 1 à 10 les uns sous les autres
<?php
$i = 1;
while ($i <= 10) {
echo $i . "<br/>";
$i++;
}
<br/> : ajoute un passage à la ligne
Exemple : Affiche les nombres pairs de 1 à 10 les uns sous les autres
<?php
$i = 1;
while ($i <= 10) {
if ($i % 2 == 0) {
echo $i . "<br/>";
}
$i++;
}
$i % 2 : retourne le reste de la division entière de $i par 2. Quand on divise un nombre par 2, soit il reste 0 soit il reste 1. Ici, on affiche que les nombres pour lesquels il reste 0. C'est à dire les nombres pairs.
Exemple : Affiche les 10 nombres du tableau les uns sous les autres
<?php
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
$i = 0;
while ($i < 10) {
echo $listeNombres[$i] . "<br/>";
$i++;
}
Un tableau de 10 éléments a son premier indice à 0 et son dernier à 9.
La boucle commence à 0 et termine strictement avant 10 donc 9.
echo $listeNombres[$i] : affiche la valeur du tableau à l'emplacement $i. Comme $i change à chaque tour de boucle, la valeur affichée correspond à une case différente du tableau.
Exemple : Affiche les nombres du tableau les uns sous les autres, en fonction de la taille du tableau.
<?php
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
$i = 0;
while ($i < count($listeNombres)) {
echo $listeNombres[$i] . "<br/>";
$i++;
}
count($listeNombres) : retourne le nombre d'éléments du tableau.
Si nous modifions le nombre d'éléments du tableau, l'algorithme reste valable.
Exemple : Affiche la somme des nombres du tableau
<?php
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
$i = 0;
$somme = 0;
while ($i < count($listeNombres)) {
$somme = $somme + $listeNombres[$i];
$i++;
}
echo $somme;
$somme = $somme + $listeNombres[$i] : à chaque tour de boucle la somme est égale à la somme précédente plus la i-ième valeur du tableau.
On peut écrire :
$somme += $listeNombres[$i]
Exemple : Affiche la somme des nombres multiples de 3 du tableau
<?php
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
$i = 0;
$somme = 0;
while ($i < count($listeNombres)) {
if($listeNombres[$i] % 3 == 0){
$somme = $somme + $listeNombres[$i];
}
$i++;
}
echo $somme;
$listeNombres[$i] % 3 == 0 : S'il reste 0 lorsque le nombre est divisé par 3, cela signifie qu'il est divisible par 3, donc multiple de 3.
$listeNombres[$i] % 3 != 0 : S'il ne reste pas 0, le nombre n'est pas multiple de 3.
Exemple : Affiche combien de nombres sont multiples de 3
<?php
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
$i = 0;
$cpt = 0;
while ($i < count($listeNombres)) {
if($listeNombres[$i] % 3 == 0){
$cpt++;
}
$i++;
}
echo $cpt;
Pour chaque condition vraie, on augmente un compteur de 1. A la fin nous avons le nombre totale de conditions vraies.
Exemple : Affiche combien de nombres sont multiples de 3 et supérieurs à 10
<?php
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
$i = 0;
$cpt = 0;
while ($i < count($listeNombres)) {
if($listeNombres[$i] % 3 == 0 && $listeNombres[$i] >= 10){
$cpt++;
}
$i++;
}
echo $cpt;
&& : permet d'ajouter une condition restrictive (et)
|| : permet d'ouvrir les possibilités (ou)
Exemple : Affiche l'emplacement du nombre 7
<?php
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
$i = 0;
while ($i < count($listeMots) && $listeNombres[$i] != 7 ) {
$i++;
}
if ($i == count($listeMots)) {
echo "Il n'y a pas de 7 dans le tableau";
}else{
echo $i;
}
Dès que la valeur du tableau est égale à 7, on arrête la boucle.
$i correspond à l'emplacement de 7.
Si $i vaut la taille du tableau c'est qu'il n'y a pas de 7.
Avec un ternaire :
...
echo ($i == count($listeMots)) ? "Il n'y a pas de 7 dans le tableau" : $i ;
Exemple : Affiche les mots les uns à cotés des autres
<?php
$listeMots = ['bonjour', 'hello', 'matin', 'soir', 'journée', 'maintenant', 'après'];
$i = 0;
$texte = "";
while ($i < count($listeMots)) {
$texte = $texte . $listeMots[$i] . " ";
$i++;
}
echo $texte;
$texte = $texte . $listeMots[$i] . " " : la variable $texte est égale à sa valeur précédente concaténée d'un nouveau mot et d'un espace.
On peut écrire :
$texte .= $listeMots[$i] . " "
Exemple : Crée un tableau contenant la longueur des mots
<?php
$listeMots = ['bonjour', 'hello', 'matin', 'soir', 'journée', 'maintenant', 'après'];
$i = 0;
$tab = [];
while ($i < count($listeMots)) {
$tab[] = mb_strlen($listeMots[$i]);
$i++;
}
var_dump($tab);
mb_strlen : retourne le nombre de caractères d'une chaîne de caractères.
Exemple : Crée un tableau contenant la première lettre des mots
<?php
$listeMots = ['bonjour', 'hello', 'matin', 'soir', 'journée', 'maintenant', 'après'];
$i = 0;
$tab = [];
while ($i < count($listeMots)) {
$tab[] = mb_substr($listeMots[$i], 0, 1);
$i++;
}
var_dump($tab);
mb_substr($listeMots[$i], 0, 1) : la première lettre d'un mot se trouve à l'indice 0.
Exemple : Affiche les noms d'une liste de tableaux associatifs
<?php
$listePersonnes = [
['id' => 8, 'nom' => 'Aule', 'prenom' => 'Lucie', 'age' => 45],
['id' => 9, 'nom' => 'Ball', 'prenom' => 'Annie', 'age' => 24],
['id' => 10, 'nom' => 'Bon', 'prenom' => 'Jean', 'age' => 65],
['id' => 11, 'nom' => 'Braisile', 'prenom' => 'France', 'age' => 13]
];
$i = 0;
$texte = "";
while ($i < count($listePersonnes)) {
$texte = $texte . $listePersonnes[$i]['nom'] . " ";
$i++;
}
echo $texte;
Exemple : Crée un tableau avec les initiales des personnes d'une liste de tableaux associatifs
<?php
$listePersonnes = [
['id' => 8, 'nom' => 'Aule', 'prenom' => 'Lucie', 'age' => 45],
['id' => 9, 'nom' => 'Ball', 'prenom' => 'Annie', 'age' => 24],
['id' => 10, 'nom' => 'Bon', 'prenom' => 'Jean', 'age' => 65],
['id' => 11, 'nom' => 'Braisile', 'prenom' => 'France', 'age' => 13]
];
$i = 0;
$tab = [];
while ($i < count($listePersonnes)) {
$tab[] = mb_substr($listePersonnes[$i]['nom'], 0, 1) . mb_substr($listePersonnes[$i]['prenom'], 0, 1);
$i++;
}
var_dump($tab);