Les variables en PHP : le signe $
En PHP, toutes les variables commencent par $. C'est ce qui les distingue immédiatement du reste du code :
$nom = "Alice";
$age = 28;
$taille = 1.72;
$estEtudiant = false;
$adresse = null;
Pas besoin de déclarer le type : PHP le déduit automatiquement. C'est ce qu'on appelle un langage à typage dynamique.
Les types de données
PHP a plusieurs types principaux :
$texte = "Bonjour"; // string (chaîne)
$nombre = 42; // int (entier)
$decimal = 3.14; // float (décimal)
$vrai = true; // bool (booléen)
$rien = null; // null (absence de valeur)
Pour vérifier le type d'une variable, utilisez gettype() ou var_dump() :
var_dump($texte); // string(7) "Bonjour"
var_dump($nombre); // int(42)
echo gettype($vrai); // boolean
var_dump() est ton meilleur outil de débogage : il affiche le type et la valeur.
Chaînes de caractères
PHP a deux types de guillemets avec des comportements différents :
On a $nom = "Alice"; et on veut afficher Bonjour Alice en collant "Bonjour " et $nom. Avant de dérouler : est-ce que echo "Bonjour " + $nom; fonctionne en PHP (comme en JavaScript) ? Quel opérateur faut-il vraiment utiliser ?
Voir la réponse
Non. En PHP, + sert uniquement à l'addition arithmétique, jamais à coller des chaînes. "Bonjour " + $nom ne concatène pas : PHP tente une addition, et en PHP 8, additionner deux chaînes non numériques lève une TypeError (Unsupported operand types: string + string). Pour concaténer, PHP utilise le point : echo "Bonjour " . $nom; affiche Bonjour Alice. C'est le réflexe qui surprend ceux qui viennent de JavaScript ou Python. Retenir : en PHP, . colle, + additionne.
$nom = "Alice";
// Guillemets doubles : les variables sont interprétées
echo "Bonjour $nom"; // → Bonjour Alice
// Guillemets simples : tout est littéral
echo 'Bonjour $nom'; // → Bonjour $nom
// Concaténation avec le point (.)
echo "Bonjour " . $nom . " !"; // → Bonjour Alice !
Règle simple : utilise les guillemets doubles quand tu as des variables dans la chaîne, les guillemets simples sinon.
Pour les longues chaînes sur plusieurs lignes, PHP ajoute deux syntaxes bien pratiques, heredoc et nowdoc :
$nom = "Alice";
// HEREDOC (<<<"") : comme les guillemets DOUBLES, les variables sont interprétées
$message = <<<TEXTE
Bonjour $nom,
Bienvenue sur le site.
TEXTE;
// NOWDOC (<<<'') : comme les guillemets SIMPLES, tout est littéral
$brut = <<<'TEXTE'
Ici $nom n'est PAS interprété.
TEXTE;
Idéal pour un email ou un bloc HTML : pas besoin d'échapper les guillemets ni de concaténer ligne par ligne.
Le piège des backticks (`) : en PHP, ce n'est pas un troisième type de guillemets. Les backticks sont l'opérateur d'exécution shell : `ls -l` lance une commande système (comme shell_exec()). C'est rarement utile, souvent désactivé sur les hébergements, et dangereux avec des données utilisateur. Pour une chaîne : guillemets simples, doubles, ou heredoc/nowdoc. Jamais de backticks.
Tableaux indexés et associatifs
PHP a deux types de tableaux :
// Tableau indexé (comme une liste numérotée)
$fruits = ["pomme", "banane", "cerise"];
echo $fruits[0]; // → pomme
echo $fruits[2]; // → cerise
// Tableau associatif (comme un dictionnaire)
$utilisateur = [
'nom' => 'Alice',
'age' => 28,
'email' => 'alice@exemple.fr'
];
echo $utilisateur['nom']; // → Alice
echo $utilisateur['email']; // → alice@exemple.fr
Les tableaux associatifs sont partout en PHP : les données de formulaires ($_POST), les sessions ($_SESSION), les résultats de base de données...
Fonctions utiles pour les tableaux
$fruits = ["pomme", "banane"];
// Compter
echo count($fruits); // → 2
// Ajouter un élément
$fruits[] = "cerise"; // ajoute à la fin
array_push($fruits, "kiwi"); // idem
// Vérifier si une valeur existe
if (in_array("banane", $fruits)) {
echo "Banane trouvée !";
}
// Parcourir avec foreach
foreach ($fruits as $fruit) {
echo "<li>$fruit</li>";
}
// Parcourir un tableau associatif
foreach ($utilisateur as $cle => $valeur) {
echo "$cle : $valeur <br>";
}
À vous d'essayer
Modifiez le tableau, puis exécutez le code :
<?php
$utilisateur = [
'nom' => 'Alice',
'age' => 28,
'email' => 'alice@exemple.fr',
];
echo "Nom : " . $utilisateur['nom'] . "\n";
foreach ($utilisateur as $cle => $valeur) {
echo "$cle : $valeur\n";
}
?>
PHP variables: the $ sign
In PHP, all variables start with $. That's what immediately sets them apart from the rest of the code:
$name = "Alice";
$age = 28;
$height = 1.72;
$isStudent = false;
$address = null;
No need to declare the type — PHP figures it out automatically. This is called a dynamically typed language.
Data types
PHP has several main types:
$text = "Hello"; // string
$number = 42; // int (integer)
$decimal = 3.14; // float
$true = true; // bool (boolean)
$nothing = null; // null (no value)
To check a variable's type, use gettype() or var_dump():
var_dump($text); // string(5) "Hello"
var_dump($number); // int(42)
echo gettype($true); // boolean
var_dump() is your best debugging tool — it shows the type and the value.
Strings
PHP has two types of quotes with different behaviors:
We have $nom = "Alice"; and want to display Bonjour Alice by joining "Bonjour " and $nom. Before scrolling: does echo "Bonjour " + $nom; work in PHP (like in JavaScript)? What operator should you really use?
See the answer
No. In PHP, + is only for arithmetic addition, never for joining strings. "Bonjour " + $nom does not concatenate: PHP tries to add, and in PHP 8, adding two non-numeric strings throws a TypeError (Unsupported operand types: string + string). To concatenate, PHP uses the dot: echo "Bonjour " . $nom; prints Bonjour Alice. This is the reflex that surprises developers coming from JavaScript or Python. Remember: in PHP, . joins, + adds.
$name = "Alice";
// Double quotes: variables are interpreted
echo "Hello $name"; // → Hello Alice
// Single quotes: everything is literal
echo 'Hello $name'; // → Hello $name
// Concatenation with dot (.)
echo "Hello " . $name . "!"; // → Hello Alice!
Simple rule: use double quotes when you have variables in the string, single quotes otherwise.
For long multi-line strings, PHP adds two handy syntaxes, heredoc and nowdoc:
$name = "Alice";
// HEREDOC (<<<"") : like DOUBLE quotes, variables are interpreted
$message = <<<TEXT
Hello $name,
Welcome to the site.
TEXT;
// NOWDOC (<<<'') : like SINGLE quotes, everything is literal
$raw = <<<'TEXT'
Here $name is NOT interpreted.
TEXT;
Perfect for an email or an HTML block: no need to escape quotes or concatenate line by line.
The backtick trap (`): in PHP, this is not a third type of quote. Backticks are the shell execution operator: `ls -l` runs a system command (like shell_exec()). It's rarely useful, often disabled on hosting, and dangerous with user data. For a string: single, double, or heredoc/nowdoc quotes — never backticks.
Indexed and associative arrays
PHP has two types of arrays:
// Indexed array (like a numbered list)
$fruits = ["apple", "banana", "cherry"];
echo $fruits[0]; // → apple
echo $fruits[2]; // → cherry
// Associative array (like a dictionary)
$user = [
'name' => 'Alice',
'age' => 28,
'email' => 'alice@example.com'
];
echo $user['name']; // → Alice
echo $user['email']; // → alice@example.com
Associative arrays are everywhere in PHP — form data ($_POST), sessions ($_SESSION), database results...
Useful array functions
$fruits = ["apple", "banana"];
// Count
echo count($fruits); // → 2
// Add an element
$fruits[] = "cherry"; // appends
array_push($fruits, "kiwi"); // same
// Check if a value exists
if (in_array("banana", $fruits)) {
echo "Banana found!";
}
// Loop with foreach
foreach ($fruits as $fruit) {
echo "<li>$fruit</li>";
}
// Loop through associative array
foreach ($user as $key => $value) {
echo "$key: $value <br>";
}
À vous d'essayer (vrai PHP)
À vous d'essayer (vrai PHP)
<?php
$utilisateur = [
'nom' => 'Alice',
'age' => 28,
'email' => 'alice@exemple.fr',
];
echo "Fiche utilisateur\n";
foreach ($utilisateur as $cle => $valeur) {
echo "- $cle : $valeur\n";
}
$fruits = ["pomme", "banane", "cerise"];
echo "\nFruits (" . count($fruits) . ") :\n";
foreach ($fruits as $fruit) {
echo "- $fruit\n";
}
?>
🎯 Pratique
S'entraîner (clique pour ouvrir) :
✨ Prompt IA
Copiez ce prompt dans Claude ou ChatGPT :
Crée-moi un tableau associatif PHP représentant un produit (nom, prix, stock, catégorie) et affiche-le avec un foreach dans un tableau HTML. Explique chaque ligne.
💬 Ré-explique sans regarder
Sans relire la réponse de l'IA : avec tes mots, qu'est-ce qu'un tableau associatif en PHP, et comment lire la valeur de la clé 'nom' puis parcourir tout le tableau avec foreach ?
$user['nom']. Pour tout parcourir, foreach ($user as $cle => $valeur) donne à chaque tour la clé ET la valeur. Bonus : c'est la structure de $_POST, $_SESSION et des résultats de base de données.L'IA a généré ce code, mais il y a une erreur. Le nom affiché devrait être « Alice », pas « $nom ». Corrigez les guillemets.
<?php
$nom = "Alice";
// BUG : en PHP, les guillemets SIMPLES n'interprètent pas les variables.
// Cette ligne affiche littéralement « Bonjour $nom » au lieu de « Bonjour Alice ».
echo 'Bonjour $nom'; // ← corrige-moi : mets des guillemets DOUBLES
?>
⚖️ Juge le code de l'IA
L'IA te propose ce code pour afficher une fiche utilisateur. Ton rôle de relecteur : l'accepter tel quel ou le rejeter, et dire pourquoi.
<?php
$user = [
'nom' => 'Alice',
'email' => 'alice@exemple.fr',
];
echo "Nom : " . $user['nom'] . "\n";
echo "Email : " . $user['email'] . "\n";
echo "Téléphone : " . $user['telephone'] . "\n";
'telephone' n'existe pas dans le tableau : $user['telephone'] déclenche un Warning: Undefined array key et affiche une chaîne vide. Le réflexe pro : ne jamais supposer qu'une clé est présente. On vérifie avec isset($user['telephone']) ou array_key_exists(), ou on fournit un défaut avec l'opérateur de fusion null : $user['telephone'] ?? 'non renseigné'.🧠 Rappel libre
Sans remonter dans la leçon : par quel signe commence toute variable PHP, et qu'affiche echo 'Bonjour $nom'; avec des guillemets simples ?
$ (ex. $nom). En guillemets simples, rien n'est interprété : echo 'Bonjour $nom'; affiche littéralement Bonjour $nom. Pour insérer la valeur, il faut des guillemets doubles : echo "Bonjour $nom"; affiche Bonjour Alice.🔧 Débugue le code
Symptôme : ce code devrait afficher Bonjour Alice, mais il plante avec une TypeError (Unsupported operand types: string + string). Répare-le dans l'éditeur, puis exécute.
<?php
$nom = "Alice";
echo "Bonjour " + $nom;
+ sert uniquement à l'addition arithmétique. Additionner deux chaînes non numériques lève une TypeError en PHP 8. Pour coller des chaînes, PHP utilise le point : echo "Bonjour " . $nom; affiche Bonjour Alice. Réflexe pour qui vient de JavaScript ou Python : en PHP, . colle, + additionne."Bonjour $nom" et 'Bonjour $nom' ?'Alice' dans $user = ['nom' => 'Alice']; ?Vos variables et tableaux sont prêts, mais recopier le même code dix fois est pénible. Vous allez découvrir les fonctions pour ranger votre logique au propre, et les boucles pour parcourir un tableau entier sans répéter une ligne.
Leçon 4 : Fonctions et boucles →