What does operator precedence look like in php?

怪我咯
Release: 2023-03-10 21:20:02
Original
1914 people have browsed it

Operator precedenceSpecifies how "tightly" two expressions are bound. For example, the expression 1 + 5 * 3 evaluates to 16 instead of 18 because the multiplication sign ("*") has higher precedence than the plus sign ("+"). Parentheses can be used to force a priority change if necessary. For example: (1 + 5) * 3 has the value 18.

If operators have the same precedence, their combination direction determines whether evaluation should be from right to left or from left to right - see the example below.

The following table lists the operators from high to low precedence. Operators in the same line have the same precedence, and the direction in which they are combined determines the order of evaluation.

The operator priority is as follows

##Noneclone new clone and newleft[ Right++ -- ~ (int) (float) (string) (array) (object) (bool) @type and increment/decrementNoneinstanceofTypeRight!left* / %left+ - .arithmetic operators and left<< >>Bitwise operatorsNone== != === !== < >Comparison operators##leftleftleftleftleft##left? :Ternary operatorright= += -= *= /= .= %= &= |= ^= <<= >>= =>leftandlogical operatorleftxorlogical operatorleftorlogical operatorleft, is used in many places For operators with the same priority, the left combination direction This means that the evaluation will be from left to right, and vice versa for right combination directions. It is possible that an operator with the same precedence without associative direction cannot be combined with itself. For example, in PHP 1 < 2 > 1 is an illegal statement, but 1 <= 1 == 1 is not. Because the priority of the T_IS_EQUAL operator
Operator priority
Combined Direction Operator Additional information
array()
Logical operation Symbol
Arithmetic operator
string operators
& Bitwise operators and references
^ bit operator
| bit operator
&& logical operator
|| Logical operator
Assignment operator
is lower than that of the T_IS_SMALLER_OR_EQUAL operator.

Example #1 In conjunction with direction

<?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
?>
Copy after login

Using parentheses can often enhance the readability of your code, even when they are not strictly needed.

Note:

Although = has lower precedence than most other operators, PHP still allows expressions like the following: if (!$a = foo ()), in this case the return value of foo() is assigned to $a .

The above is the detailed content of What does operator precedence look like in php?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template