Operator precedence
Operator precedence specifies 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 change in priority if necessary. For example: (1 + 5) * 3 has a value of 18.
The following table lists the precedence of operators from lowest to highest.
Operator precedence
结合方向 | 运算符 |
---|---|
左 | , |
左 | or |
左 | xor |
左 | and |
右 | |
右 | = += -= *= /= .= %= &= |= ^= ~= <<= >>= |
左 | ? : |
左 | || |
左 | && |
左 | | |
左 | ^ |
左 | & |
无 | == != === !== |
无 | < <= > >= |
左 | << >> |
左 | + - . |
左 | * / % |
右 | ! ~ ++ -- (int) (float) (string) (array) (object) @ |
右 | [ |
无 | new |
Note: Although ! has a higher priority than =, PHP still Expressions like the following are allowed: if (!$a = foo()), in which case the output of foo() is assigned to $a.
Arithmetic Operators
Remember the basic math you learned in school? Just like them.
The arithmetic operator
例子 | 名称 | 结果 |
---|---|---|
$a + $b | 加法 | $a 和 $b 的和。 |
$a - $b | 减法 | $a 和 $b 的差。 |
$a * $b | 乘法 | $a 和 $b 的积。 |
$a / $b | 除法 | $a 除以 $b 的商。 |
$a % $b | 取模 | $a 除以 $b 的余数。 |
The division sign ("/") always returns a floating point number, even if both operands are integers (or converted from strings The same is true for (integers).
Assignment Operator
The basic assignment operator is "=". You might think it means "equal to" at first, but it's not. It actually means assigning the value of the right-hand expression to the left-hand operand.
The value of the assignment operation expression is the assigned value. That is, the value of "$a = 3" is 3. This allows you to do a few tricks:
$a = ($b = 4) + 5; // $a is equal to 9 now, and $b has been set to 4. Copy after login |
In addition to the basic assignment operators, there are "group sum operators" suitable for all binary arithmetic and string operators, which can Allows you to use its value in an expression and assign the result of the expression to it, for example:
$a = 3;$a += 5; // sets $a to 8, as if we had said: $a = $a + 5;$b = "Hello ";$b .= "There!"; // sets $b to "Hello There!", just like $b = $b . "There!"; Copy after login |
Note that the assignment operation copies the value of the original variable to the new variable (assignment by value) , so changing one does not affect the other. This is also suitable if you are copying some values such as large values in a tight loop. PHP 4 supports reference assignment, using the $var = &$othervar; syntax, but this is not possible in PHP 3. "Reference assignment" means that both variables point to the same data, and there is no copy of any data.
1