Chapitre 10. Les opérateurs

Table des matières
La précédence des opérateurs
Les opérateurs arithmétiques
Les opérateurs d'assignation
Opérateurs sur les bits
Opérateurs de comparaison
Opérateur de contrôle d'erreur
Opérateur d'exécution
Opérateurs d'incrémentation/Décrémentation
Les opérateurs logiques
Opérateurs de chaînes
Opérateurs de tableaux
Opérateur de type

Un opérateur est quelque chose que vous alimentez avec une ou plusieurs valeurs (ou expression, dans le jargon de programmation) qui retourne une autre valeur (donc que la construction elle-même devient une expression). Donc, vous pouvez penser aux fonctions ou constructions qui retournent une valeur (comme print) comme opérateur et ceux qui retournent rien du tout (comme echo).

Il y a trois types d'opérateurs. Le premier, l'opérateur unaire, qui opère sur une seule valeur, par exemple ! (l'opérateur de négation) ou ++ (l'opérateur d'incrémentation). Le second groupe, les opérateurs binaires ; ce groupe contient la plus part des opérateurs supportés par PHP qui sont listés ci-dessous dans la section "La précédence des opérateurs".

Le troisième groupe est le groupe des opérateurs de terminaison : ?:. Ils doivent être utilisés pour choisir entre deux expressions dépendants d'une troisième, plutôt que sélectionner deux phrases ou chemins d'exécution. Les expressions ternaires environnantes avec des parenthèses est une idée très bonne.

La précédence des opérateurs

La priorité des opérateurs spécifie l'ordre dans lequel les valeurs doivent être analysées. Par exemple, dans l'expression 1 + 5 * 3, le résultat est 16 et non 18, car la multiplication ("*") a une priorité supérieure par rapport à l'addition ("+"). Des parenthèses peuvent être utilisées pour forcer la priorité, si nécessaire. Par exemple : (1 + 5) * 3 donnera 18. Si la priorité d'opérateur est égale, l'associativité de gauche à droite est utilisée.

Le tableau suivant dresse une liste de la priorité des différents opérateurs dans un ordre croissant de priorité.

Tableau 10-1. Précédence des opérateurs

AssociativitéOpérateurs
non-associativenew
droite[
droite! ~ ++ -- (int) (float) (string) (array) (object) @
gauche* / %
gauche+ - .
gauche<< >>
non-associatif< <= > >=
non-associatif== != === !==
gauche&
gauche^
gauche|
gauche&&
gauche||
gauche? :
droite = += -= *= /= .= %= &= |= ^= <<= >>=
droiteprint
gaucheand
gauchexor
gaucheor
gauche,

Note : Bien que ! soit prioritaire sur =, PHP va tout de même exécuter des expressions comme : if (!$a = foo()). Dans cette situation, le résultat de foo() sera placé dans la variable $a.