Les opérateurs
Table of Contents
- 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 et décrémentation
- Les opérateurs logiques
- Opérateurs de chaînes
- Opérateurs de tableaux
- Opérateurs de types
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 celles 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 plupart 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épendantes d'une troisième, plutôt que sélectionner deux phrases ou chemins d'exécution. Les expressions ternaires environnantes avec des parenthèses sont une très bonne idée.
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.
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 | = += -= *= /= .= %= &= |= ^= <<= >>= | assignation |
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.
Example#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
?>
Note: Bien que = soit prioritaire sur la plupart des opérateurs, 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.