
Les opérateurs
#1
Opérateurs arithmétiques
Vous avez ci-dessous la liste des opérateurs arithmétiques.
Opérateur | Exemple | Résultat |
---|---|---|
Addition | $a + $b | Somme de $a et $b |
Soustraction | $a - $b | Différence de $a et $b |
Multiplication | $a * $b | Produit de $a par $b |
Division | $a / $b | Division de $a par $b |
Modulo | $a % $b | Division entière de $a par $b |
Exponentiation | $a ** $b | $a à la puissance $b |
Il faut savoir que les opérateurs ont un ordre d'exécution. C'est ce que l'on appelle la priorité des opérateurs. Par exemple, si je calcule 4+3*7
dans ma tête, alors j'ai deux possibilités :
- Je fais l'addition en premier, soit
4
plus3
égal7
fois7
égal49
. - Je fais la multiplication en premier, soit
3
fois7
égal21
plus4
égal25
.
PHP fait la multiplication en premier. Si vous regardez le tableau suivant, vous voyez que la multiplication est prioritaire par rapport à l'addition.
Priorité. (du plus au moins) |
---|
() |
** |
* / % |
+ - |
= |
Ci-dessous, je teste en ligne de commande. Si vous ne voulez pas, que ceux qui lisent votre code, se posent des questions, et bien, mettez des parenthèses. Il faut noter que l'affectation se fera en dernier 😏.
#2
Opérateurs d'incrémentation et de décrémentation
Vous pouvez incrémenter ou décrémenter une variable en mettant un opérateur ++
ou --
avant ou après la variable.
- Si vous mettez l'opérateur avant la variable, alors l'opération sera faite, avant l'utilisation de la variable. Dans ce cas, on parle de pré-opération, c'est-à-dire de pré-incrémentation ou de pré-décrémentation.
- Si vous mettez l'opérateur après la variable, alors l'opération sera faite, après l'utilisation de la variable. Dans ce cas, on parle de post-opération, c'est-à-dire de post-incrémentation ou de post-décrémentation.
Ci-dessous un premier exemple avec post-incrémentation. Le premier echo
se fait avec la valeur courante de $x
soit 3
. Ensuite, et seulement ensuite, $x
est incrémentée. Le deuxième echo
le voit, et affiche 4
.
Ci-dessous un deuxième exemple avec pré-incrémentation. Ci-dessous la valeur de $x
est pré-incrémentée avant son utilisation par le premier echo
qui va donc afficher 4
. Le deuxième echo
affiche lui aussi 4
.
#3
Opérateurs d'affectation arithmétiques
Les opérateurs d'affectation arithmétiques font d'abord une opération arithmétique, ensuite font une affectation. Dans l'exemple ci-dessous, j'affecte l'entier 1
à $x
ensuite avec l'écriture $x += 2
, j'ajoute 2
à $x
ensuite, je lui affecte la nouvelle valeur qui est 3
.
Vous pouvez utiliser cette syntaxe avec les opérateurs suivants :
Opérateur | Exemple | Résultat |
---|---|---|
Addition | $x += a | $x = $x + a |
Soustraction | $x -= a | $x = $x - a |
Multiplication | $x *= a | $x = $x * a |
Division | $x /= a | $x = $x / a |
Modulo | $x %= a | $x = $x % a |
Exponentiation | $x **= a | $x = $x ** a |
Concaténation | $x .= 'a' | $x = $x.'a' |
#4
Opérateurs de comparaisons
Les opérateurs de comparaisons vous permettent de comparer deux valeurs. Une valeur ayant un type, il y a deux façons de comparer.
- Vous pouvez faire une comparaison stricte en comparant les valeurs et leur type.
- Vous pouvez faire une comparaison non stricte en comparant uniquement les valeurs. Mais dans ce cas-là, si les types sont différents, alors PHP va essayer de convertir une valeur dans le type de l'autre pour comparer ce qui est comparable. De nombreuses situations peuvent se présenter. Elles sont résumées dans plusieurs tableaux de comparaison de type de la documentation. En général, on préfère éviter les comparaisons non strictes.
Dans l'exemple ci-dessous, je compare la valeur false
à une chaîne vide. Si la comparaison est non stricte, les valeurs sont "vues" comme égales par PHP. Si la comparaison est stricte, alors elles sont "vues" comme différentes. Vous pouvez vérifier ces cas dans les tableaux de comparaisons de type de la documentation.
Le code ci-dessous affiche Egal
en PHP 7.3 et Différent
en PHP 8.2.1. Cette différence vient du fait, qu'en 7.3 la chaîne est convertie en entier, alors qu'en 8.2.1, c'est l'entier qui est converti en chaîne.
Pour éviter d'implanter des situations de ce type dans vos codes, pensez à utiliser des comparaisons strictes 😀. Si vous ne pouvez pas, alors, faites les conversions vous-même. Ci-dessous, j'ai ajouté un cast et ça fonctionnera toujours pareil.