Faire le quiz close

Les opérateurs

#1 Opérateurs arithmétiques open

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 plus 3 égal 7 fois 7 égal 49.
  • Je fais la multiplication en premier, soit 3 fois 7 égal 21 plus 4 égal 25.

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, eh 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 open

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 open

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 open

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.