目录
算术运算符
递增/递减运算符
赋值运算符
位运算符
比较运算符
错误控制运算符
执行运算符
逻辑运算符
字符串运算符
数组运算符
类型运算符
运算符是可以通过给出的一个或多个值来产生另一个值的东西。
运算符可以按照其能接受几个值来分组。一元运算符只能接受一个值,例如 ++;
二元运算符可接受两个值,例如熟悉的 +
(加)和 -
(减),以及三元运算符,可以接受三个值。
它跟我们在学校学习的基本数学知识是一样的,比如:加、减、乘、除、取模。
#示例
执行结果
int(8)
int(5)
int(16)
int(2)
int(2)
递增/递减运算符属于一元运算符,它可以将值递增或者递减1。
#示例
执行结果
string(8) "前加:3"
string(8) "后加:2"
string(8) "前减:1"
string(8) "后减:2"
结论
前加:$a的值先加1,然后再返回$a;后加:先返回$a,然后$a的值再加1;
前减:$a的值先减1,然后再返回$a;后减:先返回$a,然后$a的值再减1;
赋值运算符是“=”,我们可能会把它联想成等于号,但其实不是,它是把右边的表达式赋值给左边的表达式。
#示例
执行结果
int(5)
引用赋值
语法:$a = &$b;引用赋值意味着两个变量指向了同一个数据,并没有拷贝新的。
#示例
执行结果
int(2)
int(5)
在这里$b指向的是$a,因此当$a的值有变化时,$b也会跟着改变。
位运算就是对某些数的二进制形式进行运算,一般有按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)、右移(>>)。
#示例:按位与(&)
执行结果
0
按位与就是两个数的对应位都为1则结果为1。示例讲解:5的二进制表示为:101,2的二进制表示为:010;按照每一位进行与预算:1&0、0&1、1&0,得到的结果是000即0。
#示例:按位异或(^)
输出结果
7
按位异或就是两个数的对应位不相同则结果为1。示例讲解:5的二进制表示为:101,2的二进制表示为:010;按照每一位进行异或预算:1^0、0^1、1^0,得到的结果是111,十进制则是7。
#示例:左移(<<)
输出结果
20
示例讲解:5的二进制表示为:101,<<2表示向左边移动两次即:10100,十进制则是20。(小技巧:每一次移动就表示结果*2)。
比较运算符:把两个值进行比较。常用的运算符如下:
#示例:等于、全等
执行结果
bool(true)
bool(false)
#示例:太空船运算符
$b);
//等于
$a = 2;$b = 2;
var_dump($a<=>$b);
//大于
$a = 3;$b = 2;
var_dump($a<=>$b);
执行结果
int(-1)
int(0)
int(1)
在表达式之前加上@符号,该表达式可能产生的错误都会被抑制。也就是不会抛出错误信息。
#示例
'test'];
var_dump($arr['b']);
var_dump(@$arr['b']);
执行结果
PHP Warning: Undefined array key "b" in D:\soft\phpstudy\phpstudy_pro\WWW\a.com\1.php on line 3
Warning: Undefined array key "b" in D:\soft\phpstudy\phpstudy_pro\WWW\a.com\1.php on line 3
NULL
NULL
当尝试访问不存在的key时,如果加上@符号,则不会抛出警告信息。
PHP支持一个执行运算符:反引号(``),它会把反引号里面的内容作为shell命令来执行,效果等同于shell_exec()函数。
#示例:windows环境输出当前目录下的文件
执行结果
Directory of D:\soft\phpstudy\phpstudy_pro\WWW\a.com
2025/01/17 15:21 .
2025/01/11 09:53 ..
2025/01/11 09:53 0 .htaccess
2025/01/17 15:21 .idea
2025/01/17 15:21 54 1.php
2025/01/14 18:31 21 1.txt
2025/01/15 20:17 28 2.php
2025/01/15 16:41 71 composer.json
2025/01/15 16:41 1,772 composer.lock
2025/01/11 09:53 error
2025/01/11 09:53 0 nginx.htaccess
2025/01/15 11:30 vendor
7 File(s) 1,946 bytes
5 Dir(s) 193,647,759,360 bytes free
例子 | 名称 | 规则 |
$a and $b | and(逻辑与) | 只有$a和$b都为true则结果为true,否则为false |
$a or $b | or (逻辑或) | 只要$a、$b中有一个为true,则结果为true,否则为false |
$a xor $b | xor (逻辑异或) | $a、$b只有一个为true,则结果为true,否则为false |
!$a | !(逻辑非) | 取反,只有$a是false,才为true |
$a && $b | &&(逻辑与) | 只有$a和$b都为true则结果为true,否则为false |
$a || $b | || (逻辑或) | 只要$a、$b中有一个为true,则结果为true,否则为false |
通过上面的表格可以看到逻辑与、逻辑或有两种运算符,它们的运算规则是一样的,但是它们运算的优先级不一样。
#示例
结论:
and和or运算符的优先级低于赋值运算符,&& 和 ||运算符的优先级高于and和or。
and和or在使用的时候需要注意优先级,否则会导致意料之外的结果,通常建议使用 && 和 ||。
字符串有两个运算符。
#示例
执行结果
string(12) "Hello World!"
string(12) "Hello World!"
数组也有等于、全等、不等、不全等这些运算法,这里主要介绍联合运算符(+):把右边的数组元素加到左边的数组中,如果有相同的键名,则只保留左边的。
#示例
'red','b'=>'black'];
$b = ['a'=>'blue', 'c'=>'yellow'];
var_dump($a + $b);
var_dump($b + $a);
执行结果
array(3) {
["a"]=>
string(3) "red"
["b"]=>
string(5) "black"
["c"]=>
string(6) "yellow"
}
array(3) {
["a"]=>
string(4) "blue"
["c"]=>
string(6) "yellow"
["b"]=>
string(5) "black"
}
instanceof 用于确定一个 PHP 变量是否属于某一个类的实例。
#示例
执行结果
bool(true)
bool(false)
由于class B继承了class A,因此对象B也属于class A。
如果你在阅读这篇文章时有所收获,请不要忘记点赞评论加关注,你的支持是我创作的最大动力。当然,如果你在文中发现了疏漏之处,或是有着其他的见解,欢迎私信与我交流。
我是老卢,一个热爱分享、不断探索的知识旅者。