Skip to content

运算符 ​

运算符就是通过一个或者多个符号产生另外一个结果的符号。常见的有加减乘除等

运算符优先级 ​

运算符是有优先级的,优先级的先结合。

结合方向运算符附加信息
无clone newclone 和 new
左[array()
右**算术运算符
右++ -- ~ (int) (float) (string) (array) (object) (bool) @类型和递增/递减
无instanceof类型
右!逻辑运算符
左*** / %算术运算符
左+ - .算术运算符和字符串运算符
左<< >>位运算符
无< <= > >=比较运算符
无== != === !== <> <=>比较运算符
左&位运算符和引用
左^位运算符
左|位运算符
左&&逻辑运算符
左||逻辑运算符
左??比较运算符
左? :ternary
right= += -= *= **= /= .= %= &= |= ^= <<= >>=赋值运算符
左and逻辑运算符
左xor逻辑运算符
左or逻辑运算符
php
3+2*4// 11
5/3 // 1.33333
5%2 //2
  • 除法运算符总是返回浮点数.
  • 取模运算符的操作数在运算之前都会转换成整数(除去小数部分)

递增、递减 ​

++$a前加$a 的值加一,然后返回 $a。
$a++后加返回 $a,然后将 $a 的值加一。
--$a前减$a 的值减一, 然后返回 $a。
$a--后减返回 $a,然后将 $a 的值减一。
php
$a = 1;

echo $a++;//1
$b = 1;
echo ++$b;

$c = 'A';
echo ++$c;//B 

$bool = false;
$bool++;

var_dump($bool); //false;
  • 处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的
  • 字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)
  • 递增或递减布尔值没有效果。

位运算 ​

$a &\ $bAnd(按位与)将把 $a 和 $b 中都为 1 的位设为 1。
$a |$bOr(按位或)将把 $a 和 $b 中任何一个为 1 的位设为 1。
$a ^ $bXor(按位异或)将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
~ $aNot(按位取反)将 $a 中为 0 的位设为 1,反之亦然。
$a << $bShift left(左移)将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
$a >> $bShift right(右移)将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。

比较运算符 ​

$a == $b等于TRUE,如果类型转换后 $a 等于 $b。
$a === $b全等TRUE,如果 $a 等于 $b,并且它们的类型也相同。
$a != $b不等TRUE,如果类型转换后 $a 不等于 $b。
$a <> $b不等TRUE,如果类型转换后 $a 不等于 $b。
$a !== $b不全等TRUE,如果 $a 不等于 $b,或者它们的类型不同。
$a < $b小与TRUE,如果 $a 严格小于 $b。
$a > $b大于TRUE,如果 $a 严格大于 $b。
$a <= $b小于等于TRUE,如果 $a 小于或者等于 $b。
$a >= $b大于等于TRUE,如果 $a 大于或者等于 $b。
$a <=> $b太空船运算符(组合比较符)当$a小于、等于、大于$b时 分别返回一个小于、等于、大于0的integer 值。 PHP7开始提供.
$a ?? $b ?? $cNULL 合并操作符从左往右第一个存在且不为 NULL 的操作数。如果都没有定义且不为 NULL,则返回 NULL。PHP7开始提供。

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被[转换为数值]并且比较按照数值来进行.

由于浮点数 float的内部表达方式,不应比较两个浮点数float是否相等。

php
$a = 'abc';
$a == 1;//false
$a = 0;
$b = 'abc';

$a == $b;//true;

执行运算符 ​

PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回

php
`ls /home/`

逻辑运算符 ​

$a and $bAnd(逻辑与)TRUE,如果 $a 和 $b 都为 TRUE。
$a or $bOr(逻辑或)TRUE,如果 $a 或 $b 任一为 TRUE。
$a xor $bXor(逻辑异或)TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。
! $aNot(逻辑非)TRUE,如果 $a 不为 TRUE。
$a && $bAnd(逻辑与)TRUE,如果 $a 和 $b 都为 TRUE。
$a || $bOr(逻辑或)TRUE,如果 $a 或 $b 任一为 TRUE。
php
$a = (true || false);

字符串连接符 ​

字符串连接符号 点(.)

php
$a = 1;
$b = 222
echo $a . $b; //1222

类型运算符 ​

instanceof 用于确定一个 PHP 变量是否属于某一类

php
$c = new C();

$c instanceof C;

基于 VitePress 构建 · 欢迎 Star 与 PR