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 votre 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 :
$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 : utilisez les guillemets doubles quand vous avez 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:
$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";
}
?>
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.
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
?>
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é'.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."Bonjour $nom" et 'Bonjour $nom' ?'Alice' dans $user = ['nom' => 'Alice']; ?Your variables and arrays are ready, but copying the same code ten times is painful. You'll discover functions to keep your logic tidy, and loops to run through a whole array without repeating a single line.
Lesson 3: Functions and loops →