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
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
Le ticket de caisse
- Dans votre répertoire "Documents" créez le répertoire
tp_operateurs. - Dans ce répertoire créez le fichier
ticket_caisse.php.
L'objectif de ce TP est de simuler un petit ticket de caisse, en utilisant les opérateurs vus dans cette séance. À chaque étape, il ne manque qu'un seul symbole à retrouver.
Étape 1 — Calculer le sous-total
Deux variables sont déjà prêtes : $prixUnitaire (2) et $quantite (6). Il manque l'opérateur qui permet de calculer le sous-total en les multipliant.
Préférez des noms de variables explicites ($sousTotal, $prixUnitaire) 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 une remise avec un opérateur raccourci
Le magasin applique une remise fixe de 3 sur le sous-total. Utilisez un opérateur d'affectation raccourci pour la soustraire directement de $total.
Écrire $total -= 3; plutôt que $total = $total - 3; 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 ticket dépasse 10
Le magasin veut savoir si le montant final dépasse 10, pour proposer un petit cadeau au client.
> exclut la valeur exacte (10 ne "dépasse" pas 10), alors que >= l'inclurait. Bien choisir entre les deux évite des erreurs de logique fréquentes.
Étape 4 — Compter les articles scannés
À chaque article passé en caisse, un compteur $nombreArticles doit augmenter de 1. Deux articles sont scannés à la suite.
Étape 5 — Afficher le ticket
Il ne reste plus qu'à afficher le montant final, en collant le texte et la variable ensemble.
Terminer chaque echo par "\n" garde l'affichage du terminal lisible, avec un retour à la ligne entre chaque message.
Étape 6 — Exécuter le script
php ticket_caisse.php