PHP基础03-运算符

运算符:十种

赋值运算:(从右往左运算)

表示将右边的结果(可以是变量,数据,常量,其他运算出来的结果)保存到内存的某个位置,然后将位置的内存地址赋值给左侧的变量(常量)

算术运算符

+相加
-减
*乘
/ 表示两个数相除
%取余(模)运算,两个数相除(整数),保留余数
注意用到除法时,除数不能为0

比较运算符

如同它们名称所暗示的,允许对两个值进行比较。还可以参考 PHP 类型比较表看不同类型相互比较的例子。
比较运算符
例子 名称 结果
$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小于、等于、大于than $b时 分别返回一个小于、等于、大于0的integer 值。 PHP7开始提供.
$a ?? $b ?? $c NULL 合并操作符 从左往右第一个存在且不为 NULL 的操作数。如果都没有定义且不为 NULL,则返回 NULL。PHP7开始提供。

如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。此规则也适用于 switch 语句。当用 === 或 !== 进行比较时则不进行类型转换,因为此时类型和数值都要比对。

逻辑运算符

返回true或false
&&逻辑与:左边的条件与右边的条件同时成立(两边结果都为true)
||逻辑或:左边的条件或者右边的条件只要有一个满足即可
!逻辑非 对已有条件去翻,本身为true,取反结果就是false

逻辑与和逻辑或为短路运算:如果由第一个表达式已经可以得出结果,那么就不会运行逻辑运算符后面的表达式

连接运算符:

是PHP中将多个字符串拼接的一种符号
. 将两个字符串连接到一起
.= 复合运算,将左边的内容与右边的内容连接起来,然后重新赋值给左边变量

错误抑制符

在PHP中有一些错误可以提前预知,但是这些错误可鞥无法避免,但是又希望报错给用户看,可以使用错误抑制符
@:在可能出错的表达式前面使用@符号即可
错误抑制符通常在生产环境(上线)会用到,在开发的时候不会用:系统本身最好没有任何错误

可以看到58行没有报错而57行报错了

三目运算符

三目运算:有三个表达式参与的运算(简单的分支结构缩写)
表达式1?表达式2:表达式3
运算:如果表达式1成立,那么执行表达式2,否则执行表达式3

  • 可以复合运算,通常不用
  • 如果表达式比较复杂用括号包起来

自操作运算符

自己操作自己的运算符: ++ –

  • ++$a 前置:先自操作再把值给别人
  • &a++ 后置:先把值给别人再自操作

    注意到echo $a++ 时输出的a为2
  • 类似的有+=,-=,*=,/=,%=
    注意等号右边的整体性

    位运算符

  • 计算机码 :数值左边一位是符号位

位运算:去除计算机中最小的单位(位bit)进行运算

  • &按位与,两个为1结果为1
  • |按位或 两个有一个1为1
  • ~按位非 取反
  • ^ 按位异或 相同为1不同为1
  • <<按位左移,整个位向左移动以为,右边补0 (乘以2的操作)
  • >> 按位右移 整个位向右移动,左边补符号位 (除以2的操作,不完全正确,例如整数除以2会出现小数)
    注意:
    1.系统进行任何运算的时候都是使用补码
    2.(运算结束后)显示的时候都是原码

    按位与

    按位非

    按位右移

运算符的优先级

多种运算符同时存在的时候,如何结合运算(参见参考手册)