Les opérateurs
Notions théoriques
Un opérateur est un symbole qui permet d'effectuer une opération sur une ou plusieurs valeurs, appelées opérandes. Par exemple, dans 3 + 5, le symbole + est l'opérateur et 3 et 5 sont les opérandes.
PHP propose plusieurs familles d'opérateurs. Dans cette séance, nous allons voir les plus courantes : les opérateurs arithmétiques, d'affectation, de comparaison, logiques, et d'incrémentation/décrémentation.
Les opérateurs arithmétiques
Ces opérateurs servent à effectuer des calculs mathématiques.
| Opérateur | Rôle | Exemple | Résultat |
|---|---|---|---|
+ | Addition | 5 + 2 | 7 |
- | Soustraction | 5 - 2 | 3 |
* | Multiplication | 5 * 2 | 10 |
/ | Division | 5 / 2 | 2.5 |
% | Modulo (reste de la division entière) | 5 % 2 | 1 |
** | Puissance (exposant) | 5 ** 2 | 25 |
<?php
$score = 15;
$bonus = 3;
$total = $score + $bonus; // 18
Le modulo (%) renvoie le reste d'une division entière. Il est très utile pour tester, par exemple, si un nombre est pair : $nombre % 2 === 0.
En PHP, le symbole + sert uniquement aux additions mathématiques. Pour coller deux chaînes de caractères ensemble (la concaténation), on utilise le symbole . (point), et non +.
Les opérateurs d'affectation
Ces opérateurs permettent d'attribuer une valeur à une variable.
| Opérateur | Rôle | Exemple | Équivalent |
|---|---|---|---|
= | Affectation simple | $x = 5; | — |
+= | Ajoute puis affecte | $x += 3; | $x = $x + 3; |
-= | Soustrait puis affecte | $x -= 3; | $x = $x - 3; |
*= | Multiplie puis affecte | $x *= 3; | $x = $x * 3; |
/= | Divise puis affecte | $x /= 3; | $x = $x / 3; |
.= | Concatène puis affecte | $x .= "!"; | $x = $x . "!"; |
<?php
$points = 10;
$points += 5; // $points vaut maintenant 15
$message = "Bonjour";
$message .= " les SIO !"; // $message vaut "Bonjour les SIO !"
Ces opérateurs "raccourcis" (+=, -=, .=, ...) sont très utilisés dans les boucles pour faire évoluer une variable à chaque tour, comme un score ou un compteur.
Les opérateurs de comparaison
Ces opérateurs permettent de comparer deux valeurs. Le résultat d'une comparaison est toujours un booléen : true ou false.
| Opérateur | Rôle | Exemple |
|---|---|---|
== | Égal (compare uniquement la valeur) | 5 == "5" → true |
=== | Identique (compare la valeur et le type) | 5 === "5" → false |
!= | Différent (compare uniquement la valeur) | 5 != 3 → true |
!== | Non identique (compare la valeur et le type) | 5 !== "5" → true |
< | Strictement inférieur | 3 < 5 → true |
> | Strictement supérieur | 3 > 5 → false |
<= | Inférieur ou égal | 5 <= 5 → true |
>= | Supérieur ou égal | 4 >= 5 → false |
<?php
$noteEleve = 15;
$noteMinimale = 10;
$aReussi = $noteEleve >= $noteMinimale; // true
La différence entre == et === repose sur le type des valeurs comparées : == accepte des types différents (et peut convertir une valeur pour comparer), alors que === exige que la valeur et le type soient identiques. Cette notion de type sera détaillée en profondeur dans une prochaine séance dédiée aux types de données.
En cas de doute, préférez === et !== : ces comparaisons strictes évitent des conversions de type parfois surprenantes.
Les opérateurs logiques
Ces opérateurs permettent de combiner plusieurs conditions (ou expressions booléennes) entre elles.
| Opérateur | Rôle | Exemple |
|---|---|---|
&& (ou and) | ET logique : vrai si les deux conditions sont vraies | $age >= 18 && $aBillet |
|| (ou or) | OU logique : vrai si au moins une condition est vraie | $estMembre || $aCodePromo |
! | NON logique : inverse une valeur booléenne | !$estConnecte |
<?php
$age = 20;
$aBillet = true;
$peutEntrer = $age >= 18 && $aBillet; // true
PHP propose deux écritures pour ET et OU : && / || (les plus utilisées) et leurs équivalents en mots and / or. Ces deux écritures ne se comportent pas exactement de la même façon dans certains cas rares (priorité des opérateurs), c'est pourquoi il est recommandé d'utiliser && et || en pratique.
Les opérateurs d'incrémentation et de décrémentation
Ces opérateurs permettent d'ajouter ou de retirer 1 à une variable numérique, en une écriture très courte.
| Opérateur | Rôle | Exemple | Équivalent |
|---|---|---|---|
++ | Incrémente de 1 | $i++; | $i = $i + 1; |
-- | Décrémente de 1 | $i--; | $i = $i - 1; |
<?php
$compteur = 0;
$compteur++; // $compteur vaut 1
$compteur++; // $compteur vaut 2
$compteur--; // $compteur vaut 1
Ces opérateurs sont très fréquemment utilisés pour faire avancer un compteur dans une boucle, par exemple for ($i = 0; $i < 10; $i++) { ... }.
Exemple pratique
<?php
// Comparaison de deux scores de jeu vidéo
$scoreJoueur1 = 120;
$scoreJoueur2 = 95;
// Opérateur arithmétique : calcul de l'écart entre les deux scores
$ecart = $scoreJoueur1 - $scoreJoueur2;
// Opérateur d'affectation raccourci : on ajoute un bonus au joueur 1
$scoreJoueur1 += 10;
// Opérateur de comparaison : qui a le meilleur score ?
$joueur1Gagne = $scoreJoueur1 > $scoreJoueur2;
// Opérateur logique : les deux joueurs ont-ils dépassé 100 points ?
$tousDeuxQualifies = ($scoreJoueur1 > 100) && ($scoreJoueur2 > 100);
// Opérateur d'incrémentation : on compte le nombre de parties jouées
$nombreDeParties = 0;
$nombreDeParties++;
echo "Écart de points : " . $ecart . "\n";
echo "Le joueur 1 gagne : " . ($joueur1Gagne ? "oui" : "non") . "\n";
echo "Les deux joueurs sont qualifiés : " . ($tousDeuxQualifies ? "oui" : "non") . "\n";
echo "Nombre de parties jouées : " . $nombreDeParties . "\n";
Vous remarquez ici l'utilisation d'un opérateur ternaire (condition ? valeurSiVrai : valeurSiFaux) pour afficher "oui" ou "non" de façon plus compacte qu'un if/else. Cet opérateur sera détaillé dans une séance dédiée, plus tard dans ce cours.
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Calculatrice de panier d'achats
- Dans votre répertoire "Documents" créez le répertoire
tp_panier_achats. - Dans ce répertoire créez le fichier
panier.php.
L'objectif de ce TP est de calculer le montant total d'un panier d'achats en utilisant les différents opérateurs vus dans cette séance.
Étape 1 — Calculer le sous-total du panier
Créez deux variables $prixArticle (12) et $quantite (4), puis calculez le sous-total en les multipliant.
Préférez des noms de variables explicites ($sousTotal, $prixArticle) plutôt que des noms courts comme $s ou $p. Cela rend le calcul lisible sans avoir besoin de commentaire supplémentaire.
Étape 2 — Appliquer des frais de livraison avec un opérateur raccourci
Ajoutez des frais de livraison de 5 au sous-total, en utilisant un opérateur d'affectation raccourci, et stockez le résultat dans une nouvelle variable $total.
Écrire $total += 5; plutôt que $total = $total + 5; rend le code plus court et tout aussi lisible, une fois l'habitude prise. C'est une convention très répandue chez les développeurs PHP.
Étape 3 — Vérifier si le client bénéficie de la livraison gratuite
La livraison est offerte si le sous-total est strictement supérieur à 50 et que le client est membre du programme fidélité ($estMembre).
Même si ce n'est pas obligatoire, entourer chaque comparaison de parenthèses (($sousTotal > 50) && $estMembre) améliore la lisibilité lorsque plusieurs opérateurs sont combinés dans une même expression.
Étape 4 — Compter le nombre d'articles différents dans le panier
Ajoutez une variable $nombreArticlesDifferents initialisée à 0, puis incrémentez-la pour chaque article ajouté au panier (dans cet exercice, on ajoute 3 articles différents à la suite).
Un compteur incrémenté avec ++ doit toujours être initialisé avant d'être utilisé (ici à 0). Oublier cette initialisation provoque des résultats imprévisibles.
Étape 5 — Afficher le récapitulatif du panier
Terminez en affichant le sous-total, le total (avec frais de livraison), et si la livraison est gratuite.
Pour afficher un mélange de texte et de variables, l'opérateur . (concaténation) est indispensable. Une bonne pratique consiste à toujours ajouter "\n" en fin de ligne affichée, afin que la sortie du terminal reste lisible, avec un retour à la ligne entre chaque message.
Étape 6 — Exécuter le script
php panier.php