La priorité des opérateurs spécifie à quel point deux expressions sont "étroitement" liées. Par exemple, l'expression 1 + 5 * 3 est évaluée à 16 au lieu de 18 car le signe de multiplication (« * ») a une priorité plus élevée que le signe plus (« + »). Les parenthèses peuvent être utilisées pour forcer un changement de priorité si nécessaire. Par exemple : (1 + 5) * 3 a une valeur de 18.
La priorité de l'opérateur détermine l'ordre des opérations. Celle avec le niveau d'opération le plus élevé est calculée en premier. Si les priorités sont les mêmes, alors la direction de la combinaison des opérateurs détermine comment. pour fonctionner. Les changements de priorité peuvent être forcés en utilisant des parenthèses.
L'ordre de priorité des opérateurs de haut en bas est le suivant :
结合方向 | 运算符 | 附加信息 |
---|---|---|
无 | clone new | clone 和 new |
左 | [ | array() |
右 | ++ — ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 |
无 | instanceof | 类型 |
右 | ! | 逻辑运算符 |
左 | * / % | 算术运算符 |
左 | + – . | 算术运算符和字符串运算符 |
左 | << >> | 位运算符 |
无 | == != === !== <> | 比较运算符 |
左 | & | 位运算符和引用 |
左 | ^ | 位运算符 |
左 | | | 位运算符 |
左 | && | 逻辑运算符 |
左 | || | 逻辑运算符 |
左 | ? : | 三元运算符 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 |
左 | and | 逻辑运算符 |
左 | xor | 逻辑运算符 |
左 | or | 逻辑运算符 |
左 | , | 多处用到 |
Pour les opérateurs ayant la même priorité, le sens associatif gauche signifie que l'évaluation se fera de gauche à droite, associatif droit La direction est opposée. Il est possible qu'un opérateur avec la même préséance sans direction associative ne puisse pas être combiné avec lui-même.
Exemple : Instructions de liaison
<?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 // mixing ++ and + produces undefined behavior $a = 1; echo ++$a + $a++; // may print 4 or 5 ?>
Remarque : L'utilisation de parenthèses, même lorsqu'elles ne sont pas strictement requises, améliore souvent la lisibilité de votre code.
Bien que =
ait une priorité inférieure à celle de la plupart des autres opérateurs, PHP autorise toujours des expressions comme celles-ci : if (!$a = foo()), dans ce cas foo() La valeur de retour est affectée à $ un.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!