Aller au contenu principal

Le point-égal .=

Schéma

Notions théoriques

La concaténation de chaînes (.)

En PHP, l'opérateur . permet de coller deux chaînes de caractères bout à bout. C'est la concaténation.

$prenom = "Alice";
$nom = "Martin";

$nomComplet = $prenom . " " . $nom;
echo $nomComplet; // Alice Martin
remarque

En PHP, la concaténation de chaînes se fait avec le point . mais pas avec + comme dans beaucoup d'autres langages (JavaScript, Python…).

echo "Hello" + " World"; // ❌ PHP : résultat numérique (0)
echo "Hello" . " World"; // ✅ PHP : "Hello World"
Bonne pratique - Interpolation vs concaténation

Pour insérer une variable dans une chaîne, l'interpolation dans une chaîne à guillemets doubles est souvent plus lisible que la concaténation :

// Concaténation :
echo "Bonjour " . $prenom . " !";

// Interpolation (préférable pour les cas simples) :
echo "Bonjour $prenom !";

L'opérateur point-égal (.=)

L'opérateur .= est un raccourci pour concaténer et affecter en une seule opération. Il ajoute une chaîne à la suite de la variable existante.

$message = "Bonjour";
$message .= " Alice";
$message .= " !";
echo $message; // Bonjour Alice !

C'est équivalent à :

$message = "Bonjour";
$message = $message . " Alice";
$message = $message . " !";
echo $message; // Bonjour Alice !
info

.= fait partie d'une famille d'opérateurs d'affectation composés qui suivent tous le même principe

$a OPERATEUR= $b est équivalent à $a = $a OPERATEUR $b :

OpérateurExempleÉquivalent
.=$s .= "!"$s = $s . "!"
+=$n += 5$n = $n + 5
-=$n -= 3$n = $n - 3
*=$n *= 2$n = $n * 2
/=$n /= 4$n = $n / 4
%=$n %= 3$n = $n % 3
Bonne pratique - Construire une chaîne par étapes

.= est particulièrement utile pour construire progressivement une chaîne complexe (HTML, CSV, requête SQL…) en ajoutant des blocs les uns après les autres plutôt que de tout écrire d'une seule ligne.

Utilisation dans une boucle

.= prend tout son intérêt dans une boucle pour assembler un résultat à partir d'une liste :

$fruits = ["pomme", "banane", "cerise"];
$liste = "";

foreach ($fruits as $fruit) {
$liste .= "- " . $fruit . "\n";
}

echo $liste;
// - pomme
// - banane
// - cerise
Astuce de pro : Assembler un grand nombre de chaînes (des milliers)

Performance : pour assembler un grand nombre de chaînes (des milliers), accumuler dans un tableau puis utiliser implode() est plus efficace que de répéter .=, car PHP doit recréer la chaîne entière à chaque itération.

// Préférable pour de grandes listes :
$morceaux = [];
foreach ($items as $item) {
$morceaux[] = $item;
}
$resultat = implode(', ', $morceaux);

Exemple pratique

<?php
$etudiant = "Sophie";
$note = 17;

// Construction d'un bulletin par étapes
$bulletin = "=== Bulletin scolaire ===\n";
$bulletin .= "Élève : " . $etudiant . "\n";
$bulletin .= "Note : " . $note . "/20\n";
$bulletin .= "Mention : " . ($note >= 16 ? "Très bien" : "Bien") . "\n";

echo $bulletin;

Résultat :

=== Bulletin scolaire ===
Élève : Sophie
Note : 17/20
Mention : Très bien

Test de mémorisation/compréhension


Que fait l'opérateur .= en PHP ?


Quelle est la valeur de $x après : $x = "PHP"; $x .= " 8"; ?


Quel opérateur PHP permet de concaténer deux chaînes ?


Quelle est la différence entre = et .= ?


Que retourne : echo 'Hello' + ' World'; en PHP ?


Quel opérateur d'affectation composé est l'équivalent exact de `$a = $a . $b` ?


Quel opérateur d'affectation composé correspond à `$n = $n - 3` ?


Quelle fonction PHP permet d'enlever les espaces en fin de chaîne ?


Quel est le résultat final de `$message = 'Bonjour'; $message .= ' Alice'; $message .= ' !'; echo $message;` ?


Dans l'exemple pratique du bulletin scolaire, quel opérateur est utilisé pour choisir entre 'Très bien' et 'Bien' selon la note ?


Dans une boucle foreach, pourquoi initialise-t-on `$liste = ''` avant d'utiliser `.=` pour accumuler les résultats ?


Quel symbole utilise-t-on en PHP pour concaténer deux chaînes de caractères ?


Quel affichage produit le code suivant : `$a = '5'; $a .= '10'; echo $a;` ?


Pourquoi l'interpolation `echo "Bonjour $prenom !"` ne fonctionne-t-elle pas avec des apostrophes simples ?



TP pour réfléchir et résoudre des problèmes

Génération d'une liste HTML d'articles

Dans ce TP, vous allez créer un script PHP qui génère dynamiquement une page HTML à partir d'un tableau de données, en utilisant .= pour construire la chaîne HTML étape par étape.

Objectifs du TP

  • Utiliser .= pour construire progressivement une chaîne HTML.
  • Combiner .= avec une boucle foreach.
  • Générer du HTML valide depuis PHP.

Étape 1 — Créer le répertoire et le fichier

mkdir tp_point_egal
cd tp_point_egal
touch articles.php

Étape 2 — Ouvrir la structure HTML

Avant la boucle, initialisez $html avec l'en-tête de la page :

$html = "<!DOCTYPE html>\n";
$html .= "<html lang='fr'>\n";
$html .= "<head><meta charset='UTF-8'><title>Articles</title></head>\n";
$html .= "<body>\n";
$html .= "<h1>Liste des articles</h1>\n";

Étape 3 — Initialiser les données

Initialiser les données et démarrer le code HTML

Ouvrez articles.php et déclarez le tableau d'articles :

<?php
$articles = [
['titre' => 'Introduction à PHP', 'auteur' => 'Alice', 'note' => 14],
['titre' => 'Les tableaux en PHP', 'auteur' => 'Bob', 'note' => 15],
['titre' => 'Les fonctions en PHP', 'auteur' => 'Carol', 'note' => 13],
['titre' => 'POO en PHP', 'auteur' => 'David', 'note' => 15],
];

Étape 4 — Ajouter les articles

Parcourez le tableau $articles et ajoutez un <li> pour chaque article avec .= :


Étape 5 — Fermer la structure HTML

Fermez la liste et les balises de fin de page :


Étape 6 — Afficher la page générée


Étape 7 — Exécuter le script

php articles.php
Résultat attendu
<!DOCTYPE html>
<html lang='fr'>
<head><meta charset='UTF-8'><title>Articles</title></head>
<body>
<h1>Liste des articles</h1>
<ul>
<li><strong>Introduction à PHP</strong> — Alice (4/5)</li>
<li><strong>Les tableaux en PHP</strong> — Bob (5/5)</li>
<li><strong>Les fonctions en PHP</strong> — Carol (3/5)</li>
<li><strong>POO en PHP</strong> — David (5/5)</li>
</ul>
</body>
</html>

Bonne pratique - Générer du HTML depuis PHP

Préférer construire toute la chaîne HTML dans une variable puis l'afficher d'un coup avec echo $html; plutôt que de multiplier les echo intercalés dans du code PHP. Cela facilite la lecture, le débogage, et ouvre la porte à la mise en cache ou à l'écriture dans un fichier.

Une solution pour le TP

Une solution possible pour l'ensemble du TP