运算符是可以通过给出的一或多个值(用编程行话来说,表达式)来产生另一个值(因而整个结构成为一个表达式)的东西。
运算符可按照其能接受几个值来分组。一元运算符只能接受一个值,例如 !(逻辑取反运算符)或 ++(递增运算符)。二元运算符可接受两个值,例如熟悉的算术运算符 +(加)和 -(减),大多数 PHP 运算符都是这种。最后是唯一的三元运算符 ? :,可接受三个值;通常就简单称之为“三元运算符”(尽管称之为条件运算符可能更合适)。
PHP 的运算符完整列表见下节运算符优先级。该节也解释了运算符优先级和结合方向,这控制着在表达式包含有若干个不同运算符时究竟怎样对其求值
PHP运算符优先级
运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18是因为乘号(“*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。
如果运算符优先级相同,其结合方向决定着应该从右向左求值,还是从左向右求值——见下例。
下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
运算符优先级
运算符 | 附加信息 |
---|---|
clone new | clone 和 new |
[ | array() |
++ – ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 |
instanceof | 类型 |
! | 逻辑运算符 |
* / % | 算术运算符 |
+ - . | 算术运算符和字符串运算符 |
<< >> | 位运算符 |
== != === !== <> | 比较运算符 |
& | 位运算符和引用 |
^ | 位运算符 |
竖线 | 位运算符 |
&& | 逻辑运算符 |
‖ | 逻辑运算符 |
? : | 三元运算符 |
= += -= *= /= .= %= &= | = ^= <<= >>= => |
and | 逻辑运算符 |
xor | 逻辑运算符 |
or | 逻辑运算符 |
, | 多处用到 |
对具有相同优先级的运算符,左结合方向意味着将从左向右求值,右结合方向则反之。对于无结合方向具有相同优先级的运算符,该运算符有可能无法与其自身结合。举例说,在 PHP 中 1 < 2 > 1 是一个非法语句,而 1 <= 1 == 1则不是。因为 T_IS_EQUAL
运算符的优先级比 T_IS_SMALLER_OR_EQUAL
的运算符要低。
Example #1 结合方向
<?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
?>
运行结果:
4
使用括号,即使在并不严格需要时,通常都可以增强代码的可读性。
Note:
尽管 = 比其它大多数的运算符的优先级低,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的返回值被赋给了 $a 。
一、php算术运算符
学校里学到的基本数学算术知识吗,就和它们一样
运算符 | 名称 | 例子 | 结果 | 实例 | 结果 |
---|---|---|---|---|---|
+ | 加法 | $x + $y | $x 与 $y 求和 | 2 + 2 | 4 |
- | 减法 | $x - $y | $x 与 $y 的差数 | 5 - 2 | 3 |
* | 乘法 | $x * $y | $x 与 $y 的乘积 | 5 * 2 | 10 |
/ | 除法 | $x / $y | $x 与 $y 的商数 | 15 / 5 | 3 |
% | 模数 | $x % $y | $x 除 $y 的余数 | 5 % 2 | 1 |
- x | 取反 | -$a | $x 除 $y 的余数 | -2 | |
a . b | 并置 | $x % $y | 连接两个字符串 | “Hi” . “Ha” | HiHa |
下例展示了使用不同算数运算符的不同结果:
实例
<?php
$x=10;
$y=6;
echo ($x + $y); // 输出 16
echo ($x - $y); // 输出 4
echo ($x * $y); // 输出 60
echo ($x / $y); // 输出 1.6666666666667
echo ($x % $y); // 输出 4
?>
运行结果:
164601.66666666666674
php算术运算符
例子 | 名称 | 结果 |
---|---|---|
-$a | 取反 | $a 的负值。 |
$a + $b | 加法 | $a 和 $b 的和。 |
$a - $b | 减法 | $a 和 $b 的差。 |
$a * $b | 乘法 | $a 和 $b 的积。 |
$a / $b | 除法 | $a 除以 $b 的商。 |
$a % $b | 取模 | $a 除以 $b 的余数。 |
除法运算符总是返回浮点数。只有在下列情况例外:两个操作数都是整数(或字符串转换成的整数)并且正好能整除,这时它返回一个整数。
取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。
取模运算符 % 的结果和被除数的符号(正负号)相同。即 $a % $b 的结果和 $a 的符号相同。例如:
<?php
echo ( 5 % 3 ). "\n" ; // prints 2
echo ( 5 % - 3 ). "\n" ; // prints 2
echo (- 5 % 3 ). "\n" ; // prints -2
echo (- 5 % - 3 ). "\n" ; // prints -2
?>
运行结果:
2 2 -2 -2
<?php
$x=5;
$y=6;
//5+6为11
echo $x+$y;
?>
运行结果:
11
语法:
// 定义
$a = 1;
$b = 2;
//加法运算,结果为 3
echo ($a + $b);
//减法运算,结果为 -1
echo ($a - $b);
//乘法运算,结果为 2
echo ($a * $b);
//除法运算,结果为 0.5
echo ($a / $b);
//取反,结果为 -1
echo ( -$a );
//取模,结果为 1
echo ( $a % $b );
<?php
$x=10