Manuel PHP
Précédent |  | Suivant

# Chapitre 15. Les opérateurs

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 décroissant de priorité. Les opérateurs sur une même ligne ont une priorité équivalente et dans ce cas, leur association décide de l'ordre de leur évaluation.

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

Associativité | Opérateurs | Information additionnelle
--- | --- | ---
non-associative | new | new
gauche | [ | array()
non-associatif | ++ -- | incrémentation/décrémentation
non-associatif | ~ - (int) (float) (string) (array) (object) @ | types
non-associatif | instanceof | types
gauche | * / % | arithmétique
gauche | + - . | arithmétique et chaîne de caractères
gauche | << >> | bitwise
non-associatif | < <= > >= | comparaison
non-associatif | == != === !== | comparaison
gauche | & | bitwise et références
gauche | ^ | bitwise
gauche | | | bitwise
gauche | && | logique
gauche | || | logique
gauche | ? : | ternaire
droite | = += -= *= /= .= %= &= |= ^= <<= >>= | assignement
gauche | and | logique
gauche | xor | logique
gauche | or | logique
gauche | , | plusieurs utilisations

L'associativité de gauche signifie que l'expression est évaluée de gauche à droite, l'associativité de droite, l'inverse.

Exemple 15-1. Associativité

`<?php $a = 3 * 3 % 5; // (3 * 3) % 5 = 4 $a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2 $a = 1; $b = 2; $a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5 ?>`

Utilisez les parenthèses pour augmenter la lisibilité du code.

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

Précédent | Sommaire | Suivant
Les expressions | Niveau supérieur | Les opérateurs arithmétiques