Le tutoriel qui va suivre n'est pas tout à fait un cours mais plutôt un mémo concernant les opérateurs PHP. Il en existe 12 types au total. Nous allons les passer en revue au moyen de tableaux de synthèse. Commençons tout d'abord par les opérateurs arithmétiques.
Les opérateurs arithmétiques permettent de réaliser des opérations mathématiques sur les variables. Ce sont naturellement toutes les opérations conventionnelles telles que l'addition, la multiplication, la soustraction ou la division. Le tableau suivant résume toutes les opérations mathématiques possibles.
Opérateur Opération Exemple Résultat
- Négation -$a Opposé de $a
+ Addition $a + $b Somme de $a et $b
* Multiplication $a * $b Produit de $a et $b
- Soustraction $a - $b Différence de $a et $b
/ Division $a / $b Quotient de $a et $b
% Modulo $a % $b Reste de $a / $b
Note : l'opérateur modulo retourne le reste de la division entre deux nombres. Son utilisation permet par exemple de déterminer la parité d'un nombre ou bien de réaliser une alternance de couleurs des lignes d'un tableau HTML.
L'opérateur d'incrémentation (respectivement décrémentation) permet d'augmenter (respectivement diminuer) d'une unité la valeur de la variable. On les utilise essentiellement dans les boucles pour mettre à jour la valeur du compteur à chaque itération.
Opérateur Opération Exemple Résultat
++ Pré-Incrémentation ++$a Incrémente $a, puis retourne $a
++ Post-Incrémentation $a++ Retourne $a, puis incrémente $a
-- Pré-Décrémentation --$a Décrémente $a, puis retourne $a
-- Post-Décrémentation $a-- Retourne $a, puis décrémente $a
Ces opérateurs peuvent être placés soit devant la variable ou bien après celle-ci. Cette nuance peut-être intéressante lors de l'utilisation de boucle.
En règle générale, les cas d'utilisation font que l'on emploie plus $a++ (respectivement $a--).
C'est sans doute l'opérateur le plus élémentaire et essentiel du langage PHP. C'est grâce à lui que l'on affecte une valeur à une variable, que l'on crée un tableau ou bien que l'on instancie une classe.
Opérateur Opération Exemple Résultat L'opérateur d'affectation
= Assignation $a = 3 Affecte la valeur 3 à $a
Ils sont au nombre de deux. Le premier est l'opérateur de concaténation réalisé par le point (.) tandis que le second est l'opérateur d'assignation concaténant par le .=
Opérateur Opération Exemple Résultat Les opérateurs de chaîne de caractères
. Concaténation $a . $b Concatène les valeurs de $a et $b
.= Assignation concaténant $a .= $b Ajoute la valeur de $b à la suite de celle de $a
Ils sont essentiellement utilisés dans les structures conditionnelles (if, elseif, else, for, while...) afin de comparer des valeurs entre elles. Ses tests renverront TRUE (vrai) si la comparaison est juste ou bien FALSE (faux) si la comparaison est fausse.
Opérateur Opération Exemple Résultat
== Egalité en valeur $a == $b Vérifie que les valeurs de $a et $b sont identiques
=== Egalité en valeur et type $a === $b Vérifie que les valeurs et types de $a et $b sont identiques
!= Différence en valeur $a != $b Vérifie que les valeurs de $a et $b sont différentes
!== Différence en valeur et type $a !== $b Vérifie que les valeurs et types de $a et $b sont différents
<> Différence en valeur $a <> $b Alias de !=
< Infériorité stricte $a < $b Vérifie que $a est strictement inférieur $b
<= Infériorité ou égalité $a <= $b Vérifie que $a est strictement inférieur ou égal à $b
> Supériorité stricte $a > $b Vérifie que $a est strictement supérieur $b
>= Supériorité ou égalité $a >= $b Vérifie que $a est strictement supérieur ou égal à $b
Note : il ne faut pas confondre l'opérateur d'affectation qui s'emploie avec un seul signe égal (=) et qui permet de fixer la valeur d'une variable.
Lorsque l'on souhaite comparer à la fois les valeurs et les types des variables, on utilise l'opérateur === (respectivement !==). Cette vérification est conseillée pour deux raisons :
Illustrons la nuance entre les deux formes de comparaison :
Test de comparaison sur les variables
<?php
$a = '2'; // Type string
$b = 2; // Type entier
$c = 2; // Type entier
// Comparaison sur les valeurs
if($a == $b)
{
echo '$a et $b ont la même valeur !';
}
// Comparaison sur les valeurs et les types
if($a === $c)
{
echo '$a et $c sont de même valeur et de même type !';
}
?>
Ces deux exemples introduisent la notion de structures de contrôle par condition que nous étudierons au prochain tutoriel. Nous avons déclaré 3 variables de valeur identique 2. Seule $a est de type string (chaine de caractères) tandis que les deux autres sont de type entier (int). Lorsque l'on exécute ces deux tests, nous constatons que seul le premier affiche le message. C'est parce que le double signe égal ne s'assure pas que le type des deux variables est le même contrairement au triple signe égal.
En toute logique, une chaine de caractères ne devrait pas être "égale" à un entier. Ce serait comme comparer des torchons et des serviettes !!! On s'aperçoit ici d'une faiblesse de PHP en terme de typage des variables, et c'est donc pour cette raison que l'on parle de typage faible dans le langage PHP.
Nous vous conseillons donc dans la mesure du possible de vérifier vos valeurs à la fois sur les types et sur les valeurs.
Astuce : PHP introduit la fonction intval() qui permet de faire du transtypage (ou cast). Elle transforme par exemple un entier sous forme de chaine de caractères en entier naturel.
Les opérateurs logiques sont très souvent utilisés dans les structures de contrôle. Elles permettent de définir des expressions plus ou moins complexes qui renverront un booléen TRUE ou FALSE. Ci-dessous un tableau synthétique de ces opérateurs.
Opérateur Opération Exemple Résultat
&& ET $a && $b TRUE si $a ET $b sont vrais
AND ET $a AND $b Alias de &&
|| OU $a || $b TRUE si $a OU $b est vrai
OR OU $a OR $b Alias de ||
XOR OU exclusif $a XOR $b TRUE si $a OU $b est vrai mais pas les deux
! NON !$a TRUE si $a est faux
La différence entre AND et && (respectivement OR et ||) réside dans la priorité d'exécution. Les opérateurs && et || ont une priorité plus élevée par rapport à leur semblable litéral respectif.
Ces opérateurs permettent de manipuler les bits dans un entier. Si les paramètres de gauche et de droite sont des chaines de caractères, l'opérateur de bits agira sur les valeurs ASCII de ces caractères. (extrait de la documentation officielle).
Opérateur Opération Exemple Résultat
& ET $a & $b Les bits positionnés à 1 dans $a ET $b sont positionnés à 1
| OU $a | $b Les bits positionnés à 1 dans $a OU $b sont positionnés à 1
^ OU exclusif $a ^ $b Les bits positionnés à 1 dans $a OU dans $b mais pas dans les deux sont positionnés à 1
~ NON $a ~ $b Les bits qui sont positionnés à 1 dans $a sont positionnés à 0, et vice versa
<< Décalage à gauche $a << $b Décale les bits de $a, $b fois sur la gauche (chaque décalage équivaut à une multiplication par 2)
>> Décalage à droite $a >> $b Décalage des bits de $a, $b fois par la droite (chaque décalage équivaut à une division par 2)
Pour plus d'information concernant les opérateurs binaires, nous vous invitons à lire les exemples de la documentation officielle : les opérateurs binaires.
Les opérateurs combinés sont des opérateurs mêlant opération arithmétique ou binaire avec une assignation. D'où la notion de combinaison. Le tableau suivant résume tous ces opérateurs.
Opérateur Opération Exemple Résultat
+= Addition $a += 4 Ajoute 4 à la valeur de $a et stocke le résultat dans $a
-= Soustraction $a -= 4 Soustrait 4 à la valeur de $a et stocke le résultat dans $a
*= Multiplication $a *= 4 Multiplie par 4 la valeur de $a et stocke le résultat dans $a
/= Division $a /= 4 Divise par 4 la valeur de $a et stocke le résultat dans $a
%= Modulo $a %= 4 Calcule le reste de la division de $a par 4 et stocke le résultat dans $a
&= ET binaire $a &= $b Egal à $a = $a & $b
|= OU binaire $a |= $b Egal à $a = $a | $b
^= XOR binaire $a ^= $b Egal $a = $a ^ $b
<<= Décalage à gauche $a <<= $b Egal à $a = $a << $b
>>= Décalage à droite $a >>= $b Egal à $a = $a >> $b
En généralisant le tout, on obtient $a (opérateur)= $b qui est aussi équivalant à $a = $a (opérateur) $b.
C'est l'opérateur arobase (@) qui permet de supprimer toutes les erreurs générées par une expression (fonction, variables, constantes...). On le place juste devant l'expression pour laquelle on souhaite masquer l'erreur qui est levée.
Opérateur Opération Exemple Résultat
@ Erreur @include('fichier.php') Masque l'erreur générée par la fonction include()
Néanmoins cette pratique est vivement déconseillée car on ne devrait pas masquer une erreur générée mais au contraire il faut la traiter. Cependant il existe des cas très particuliers où l'emploi de cette technique se révèle utile. Par exemple, lorsque l'on utilise la fonction fsockopen().
Cet opérateur, délimité par des apostrophes ou guillemets obliques, permet d'exécuter des commandes Shell. Il se comporte de la même manière que la fonction shell_exec(). Si celle-ci est désactivée ou si le safe mode est activé alors cet opérateur ne fonctionnera pas par mesure de sécurité (sur les hébergements mutualisés par exemple).
Opérateur Opération Exemple Résultat
` ` Commande Shell `ifconfig` Exécute la commande shell et retourne le résultat
Le résultat d'une commande shell exécutée peut-être restitué aussi bien sur la sortie standard que dans une variable. Illustration par un exemple issu de la documentation officielle de l'opérateur d'exécution.
Comme pour les chaines de caractères, PHP propose une série d'opérateurs permettant de manipuler les tableaux. Ces opérateurs sont les mêmes que les opérateurs de comparaison mais n'ont pas forcément la même fonction et la même signification.
Opérateur Opération Exemple Résultat
+ Union $a + $b Union de $a et $b
== Egalité $a == $b TRUE si $a et $b contiennent les mêmes paires clé / valeur
=== Identique $a === $b TRUE si $a et $b contiennent les mêmes paires clé / valeur dans le même ordre et de même type
!= Inégalité $a != $b TRUE si $a et $b ne sont pas égaux
<> Inégalité $a <> $b Alias de !=
!== Non identique $a !== $b TRUE si $a et $b ne sont pas identiques
Pour plus d'informations au sujet des opérateurs sur les tableaux, nous vous invitons à consulter la documentation officielle : les opérateurs sur les tableaux.
L'opérateur de type d'objet (instanceof = « instance de ») est utilisé en programmation orientée objet afin de déterminer si un objet, son parent et ses classes dérivées sont de même type ou non.
Opérateur Opération Exemple Résultat
instanceof Instance $a instanceof B TRUE si $a est une instance de la classe B
Prenons un exemple simple pour illustrer ce concept.
Utilisation de l'opérateur instanceof
<?php
// Déclaration de classes
class Etudiant { }
class Professeur { }
// Instanciation d'un objet de type Etudiant
$hugo = new Etudiant();
// Test du type de l'objet
if($hugo instanceof Etudiant) {
echo 'Hugo est un étudiant !';
}
else
{
echo 'Hugo est un professeur !';
}
?>
Dans notre exemple, on crée un objet $hugo de type Etudiant ( = instance d'une classe Etudiant). Puis on teste si cet objet est de type Etudiant grâce à l'opérateur instanceof. Si le test renvoie TRUE alors $hugo est de type Etudiant, sinon il est de type Professeur.
Comme en mathématiques, les opérateurs ont un ordre de priorité entre eux lorsqu'ils sont exécutés. Le tableau qui suit résume chacune des priorités de ces opérateurs.
Priorité Opérateur
1 new
2 () et []
3 -- ++ et !
4 ~ - (int) (float) (string) (array) (object) @
5 instanceof
6 * / et %
7 + - et .
8 << et >>
9 < <= et >= >
10 == != et ===
11 &
12 ^
13 |
14 &&
15 ||
16 ? et :
17 Affectation et opérateurs combinés
18 AND
19 XOR
20 OR
Ce tutoriel ou mémo s'achève ici. Nous avons fait le tour des opérateurs du langage PHP. Les opérateurs d'affectation, logique et de comparaison sont les trois qu'il faut connaître sur le bout des doigts car ce sont les plus utilisés.