8768 sujets

Développement web côté serveur, CMS

Bonjour à vous tous,

Je continue mon initiation au PHP et cela me plaît de plus en plus parce que j'arrive à comprendre et donc à suivre. Cependant, je ne saisis pas la logique de la syntaxe suivante :

$i = 1;
while($i < 5){
echo $i . '<br>';
$i++;
if($i == 4){
break
}
}

Décortiquons cette boucle :
1 - On affecte la valeur 1 à la variable $i.
2 - Tant que la variable $i est inférieur à 5 est vrai...
3 - ...on affiche à l'écran la valeur de la variable $i concaténée avec un retour chariot.
4 - On incrémente de 1 la valeur de la variable $i.
5 - On teste avec une condition if si la valeur de la variable $i est égale à 4.
6 - Si oui, on place un break, c'est-à-dire un arrêt de la boucle.

Ce qui me chiffonne c'est la troisième instruction. Pourquoi placer la balise <br> entre des quotes simples ? On ne cherche pas à afficher la chaîne de caractères <br>, on cherche à exécuter la balise pour une meilleure lecture du résultat. J'ai testé en enlevant les quotes et j'ai effectivement une erreur mais je ne comprends pas pourquoi on doit placer cette balise dans des quotes. Pour moi, les quotes (ou doubles quotes) signifient qu'on veut afficher une chaîne de caractères et non exécuter une balise.

Quelqu'un saurait m'expliquer ?
Modifié par ObiJuanKenobi (31 Mar 2022 - 08:06)
Bonjour,

Une balise ne "s'execute" pas, c'est une chaine de caractères interprétée par le moteur HTML du navigateur.

PHP génère du code HTML, l'envoie au navigateur qui le lit.

Pour PHP, "<br>" ne signifie rien, c'est juste une chaine de caractères.
Et si tu supprimes les guillemets il ne comprend pas.

Autre précision:

En PHP, les variables dans une chaine de caractères entre guillemets doubles sont interprétées.
Par contre tout ce qui est dans une chaine de caractères entre guillemets simples n'est pas interprété.

La ligne 3 de ton code peut donc être écrite de 2 manières:
echo $i . '<br>';
// ou
echo "$i<br>";
Bonjour,

je me permettrai d'ajouter une petite précision sur la fin de ton code :
Tu peux supprimer cette partie :

if($i == 4){
break
}

Elle ne sert à rien puisque tu la mets dans une boucle while qui va s’arrêter à 4 (tant que $i est inférieur à 5) :
Modérateur
Salut,
Et si je peux aussi mettre mon grain de sel je préfère passer par une boucle for plutôt que while quand c'est possible :
for (let i = 1; i < 5; i++) {
  echo $i . '<br>';
}