While

L'instruction while permet de réaliser une action tant qu'une condition est vraie.

ExempleAffiche les nombres de 1 à 10

1
<?php
2
$i = 1;
3
4
while ($i <= 10) {
5
    echo $i;
6
    $i++;
7
}
8

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

ExempleAffiche les nombres de 1 à 10 les uns sous les autres

1
<?php
2
$i = 1;
3
4
while ($i <= 10) {
5
    echo $i . "<br/>";
6
    $i++;
7
}

<br/> : ajoute un passage à la ligne

ExempleAffiche les nombres pairs de 1 à 10 les uns sous les autres

1
<?php
2
$i = 1;
3
4
while ($i <= 10) {
5
    if ($i % 2 == 0) {
6
        echo $i . "<br/>";
7
    }
8
    $i++;
9
}

$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.

ExempleAffiche les 10 nombres du tableau les uns sous les autres

1
<?php
2
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
3
$i = 0;
4
5
while ($i < 10) {
6
    echo $listeNombres[$i] . "<br/>";
7
    $i++;
8
}

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.

ExempleAffiche les nombres du tableau les uns sous les autres, en fonction de la taille du tableau.

1
<?php
2
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
3
$i = 0;
4
5
while ($i < count($listeNombres)) {
6
    echo $listeNombres[$i] . "<br/>";
7
    $i++;
8
}

count($listeNombres) : retourne le nombre d'éléments du tableau.

Si nous modifions le nombre d'éléments du tableau, l'algorithme reste valable.

ExempleAffiche la somme des nombres du tableau

1
<?php
2
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
3
$i = 0;
4
$somme = 0;
5
6
while ($i < count($listeNombres)) {
7
    $somme = $somme + $listeNombres[$i];
8
    $i++;
9
}
10
11
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]

ExempleAffiche la somme des nombres multiples de 3 du tableau

1
<?php
2
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
3
$i = 0;
4
$somme = 0;
5
6
while ($i < count($listeNombres)) {
7
    if($listeNombres[$i] % 3 == 0){
8
        $somme = $somme + $listeNombres[$i];
9
    }
10
    $i++;
11
}
12
13
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.

ExempleAffiche combien de nombres sont multiples de 3

1
<?php
2
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
3
$i = 0;
4
$cpt = 0;
5
6
while ($i < count($listeNombres)) {
7
    if($listeNombres[$i] % 3 == 0){
8
        $cpt++;
9
    }
10
    $i++;
11
}
12
13
echo $cpt;

Pour chaque condition vraie, on augmente un compteur de 1. A la fin nous avons le nombre totale de conditions vraies.

ExempleAffiche combien de nombres sont multiples de 3 et supérieurs à 10

1
<?php
2
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
3
$i = 0;
4
$cpt = 0;
5
6
while ($i < count($listeNombres)) {
7
    if($listeNombres[$i] % 3 == 0 && $listeNombres[$i] >= 10){
8
        $cpt++;
9
    }
10
    $i++;
11
}
12
13
echo $cpt;

&& : permet d'ajouter une condition restrictive (et)

|| : permet d'ouvrir les possibilités (ou)

ExempleAffiche l'emplacement du nombre 7

1
<?php
2
$listeNombres = [5, 12, 7, 9, 3, 17, 8, 2, 15, 14];
3
$i = 0;
4
5
while ($i < count($listeMots) && $listeNombres[$i] != 7 ) {
6
    $i++;
7
}
8
9
if ($i == count($listeMots)) {
10
	  echo "Il n'y a pas de 7 dans le tableau";
11
}else{
12
    echo $i;
13
}

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 :

1
...
2
echo ($i == count($listeMots)) ? "Il n'y a pas de 7 dans le tableau" : $i ;

ExempleAffiche les mots les uns à cotés des autres

1
<?php
2
$listeMots = ['bonjour', 'hello', 'matin', 'soir', 'journée', 'maintenant', 'après'];
3
$i = 0;
4
$texte = "";
5
6
while ($i < count($listeMots)) {
7
    $texte = $texte . $listeMots[$i] . " ";
8
    $i++;
9
}
10
11
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] . " "

ExempleCrée un tableau contenant la longueur des mots

1
<?php
2
$listeMots = ['bonjour', 'hello', 'matin', 'soir', 'journée', 'maintenant', 'après'];
3
$i = 0;
4
$tab = [];
5
6
while ($i < count($listeMots)) {
7
    $tab[] = mb_strlen($listeMots[$i]);
8
    $i++;
9
}
10
11
var_dump($tab);
12

mb_strlen : retourne le nombre de caractères d'une chaîne de caractères.

ExempleCrée un tableau contenant la première lettre des mots

1
<?php
2
$listeMots = ['bonjour', 'hello', 'matin', 'soir', 'journée', 'maintenant', 'après'];
3
$i = 0;
4
$tab = [];
5
6
while ($i < count($listeMots)) {
7
    $tab[] = mb_substr($listeMots[$i], 0, 1);
8
    $i++;
9
}
10
11
var_dump($tab);
12

mb_substr($listeMots[$i], 0, 1) : la première lettre d'un mot se trouve à l'indice 0.

ExempleAffiche les noms d'une liste de tableaux associatifs

1
<?php
2
$listePersonnes = [
3
    ['id' => 8, 'nom' => 'Aule', 'prenom' => 'Lucie', 'age' => 45],
4
    ['id' => 9, 'nom' => 'Ball', 'prenom' => 'Annie', 'age' => 24],
5
    ['id' => 10, 'nom' => 'Bon', 'prenom' => 'Jean', 'age' => 65],
6
    ['id' => 11, 'nom' => 'Braisile', 'prenom' => 'France', 'age' => 13]
7
];
8
$i = 0;
9
$texte = "";
10
11
while ($i < count($listePersonnes)) {
12
    $texte = $texte . $listePersonnes[$i]['nom'] . " ";
13
    $i++;
14
}
15
16
echo $texte;

ExempleCrée un tableau avec les initiales des personnes d'une liste de tableaux associatifs

1
<?php
2
$listePersonnes = [
3
    ['id' => 8, 'nom' => 'Aule', 'prenom' => 'Lucie', 'age' => 45],
4
    ['id' => 9, 'nom' => 'Ball', 'prenom' => 'Annie', 'age' => 24],
5
    ['id' => 10, 'nom' => 'Bon', 'prenom' => 'Jean', 'age' => 65],
6
    ['id' => 11, 'nom' => 'Braisile', 'prenom' => 'France', 'age' => 13]
7
];
8
$i = 0;
9
$tab = [];
10
11
while ($i < count($listePersonnes)) {
12
    $tab[] = mb_substr($listePersonnes[$i]['nom'], 0, 1) . mb_substr($listePersonnes[$i]['prenom'], 0, 1);
13
    $i++;
14
}
15
16
var_dump($tab);
17