Aller au contenu principal

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érateurRôleExempleRésultat
+Addition5 + 27
-Soustraction5 - 23
*Multiplication5 * 210
/Division5 / 22.5
%Modulo (reste de la division entière)5 % 21
**Puissance (exposant)5 ** 225
<?php
$score = 15;
$bonus = 3;
$total = $score + $bonus; // 18
info

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.

attention

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érateurRôleExempleÉ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 !"
astuce

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érateurRôleExemple
==É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érieur3 < 5 → true
>Strictement supérieur3 > 5 → false
<=Inférieur ou égal5 <= 5 → true
>=Supérieur ou égal4 >= 5 → false
<?php
$noteEleve = 15;
$noteMinimale = 10;

$aReussi = $noteEleve >= $noteMinimale; // true
info

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.

astuce

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érateurRôleExemple
&& (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érateurRôleExempleÉ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
astuce

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";
info

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​


Quel opérateur permet d'effectuer une addition en PHP ?


Que renvoie l'opérateur modulo (%) ?


Quel opérateur permet de coller deux chaînes de caractères en PHP ?


Que fait l'instruction $x += 5 ; si $x valait 10 ?


Quelle est la différence principale entre == et === en PHP ?


Quel opérateur logique renvoie true uniquement si les deux conditions sont vraies ?


Quel opérateur logique renvoie true si au moins une des deux conditions est vraie ?


Que fait l'opérateur ! placé devant une expression booléenne ?


Que fait l'instruction $i++ ; ?


Quel est le résultat de l'expression 7 % 2 en PHP ?


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.


Bonne pratique - Nommer clairement ses variables

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.


Bonne pratique - Utiliser les opérateurs raccourcis

É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.


Bonne pratique - Choisir le bon opérateur de comparaison

> 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.


Bonne pratique - Toujours ajouter un retour à la ligne

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
📌 Une solution