目录
算术运算符
递增/递减运算符
赋值运算符
位运算符
比较运算符
错误控制运算符
执行运算符
逻辑运算符
字符串运算符
数组运算符
类型运算符
运算符是可以通过给出的一个或多个值来产生另一个值的东西。
运算符可以按照其能接受几个值来分组。一元运算符只能接受一个值,例如 ++;
二元运算符可接受两个值,例如熟悉的 +
(加)和 -
(减),以及三元运算符,可以接受三个值。
算术运算符
它跟我们在学校学习的基本数学知识是一样的,比如:加、减、乘、除、取模。
#示例
<?php$a = 5 + 3;$b = 6 - 1;$c = 2 * 8;$d = 10 / 5;$e = 5 % 3;var_dump($a, $b, $c, $d, $e);
执行结果
int(8)
int(5)
int(16)
int(2)
int(2)
递增/递减运算符
递增/递减运算符属于一元运算符,它可以将值递增或者递减1。
#示例
<?php//前加$a = 2;var_dump('前加:'. ++$a);//后加$a = 2;var_dump('后加:'.$a++);//前减$a = 2;var_dump('前减:'.--$a);//后减$a = 2;var_dump('后减:'.$a--);
执行结果
string(8) "前加:3"
string(8) "后加:2"
string(8) "前减:1"
string(8) "后减:2"
结论
前加:$a的值先加1,然后再返回$a;后加:先返回$a,然后$a的值再加1;
前减:$a的值先减1,然后再返回$a;后减:先返回$a,然后$a的值再减1;
赋值运算符
赋值运算符是“=”,我们可能会把它联想成等于号,但其实不是,它是把右边的表达式赋值给左边的表达式。
#示例
<?php$a = 2;$a += 3;//等同于 $a = $a + 3;var_dump($a);
执行结果
int(5)
引用赋值
语法:$a = &$b;引用赋值意味着两个变量指向了同一个数据,并没有拷贝新的。
#示例
<?php$a = 2;$b = &$a;var_dump($b);$a = 5;var_dump($b);
执行结果
int(2)
int(5)
在这里$b指向的是$a,因此当$a的值有变化时,$b也会跟着改变。
位运算符
位运算就是对某些数的二进制形式进行运算,一般有按位与(&)、按位或(|)、按位异或(^)、按位取反(~)、左移(<<)、右移(>>)。
#示例:按位与(&)
<?php$a = 5; $b = 2;echo $a & $b;
执行结果
0
按位与就是两个数的对应位都为1则结果为1。示例讲解:5的二进制表示为:101,2的二进制表示为:010;按照每一位进行与预算:1&0、0&1、1&0,得到的结果是000即0。
#示例:按位异或(^)
<?php$a = 5;$b = 2;echo $a ^ $b;
输出结果
7
按位异或就是两个数的对应位不相同则结果为1。示例讲解:5的二进制表示为:101,2的二进制表示为:010;按照每一位进行异或预算:1^0、0^1、1^0,得到的结果是111,十进制则是7。
#示例:左移(<<)
<?php$a = 5;echo $a << 2;
输出结果
20
示例讲解:5的二进制表示为:101,<<2表示向左边移动两次即:10100,十进制则是20。(小技巧:每一次移动就表示结果*2)。
比较运算符
比较运算符:把两个值进行比较。常用的运算符如下:
- 等于(==):类型转换后两个值相等。
- 全等(===):值和类型都相同。
- 不等于(!=):类型转换后两个值不相等。
- 不全等(!==):值和类型都不相同。
- 小于(<)、大于(>)、小于等于(<=)、大于等于(>=)
- 太空船运算符(<=>):也可以叫组合比较符号,左边数小于、等于、大于右边数时分别返回一个小于、等于、大于0的值。
#示例:等于、全等
<?php$a = 1;$b = '1';//等于var_dump($a == $b);//全等var_dump($a === $b);
执行结果
bool(true)
bool(false)
#示例:太空船运算符
<?php//小于$a = 1;$b = 2;var_dump($a<=>$b);//等于$a = 2;$b = 2;var_dump($a<=>$b);//大于$a = 3;$b = 2;var_dump($a<=>$b);
执行结果
int(-1)
int(0)
int(1)
错误控制运算符
在表达式之前加上@符号,该表达式可能产生的错误都会被抑制。也就是不会抛出错误信息。
#示例
<?php$arr = ['a'=>'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环境输出当前目录下的文件
<?php
$output = `dir`;
echo $output;
执行结果
Directory of D:\soft\phpstudy\phpstudy_pro\WWW\a.com2025/01/17 15:21 <DIR> .
2025/01/11 09:53 <DIR> ..
2025/01/11 09:53 0 .htaccess
2025/01/17 15:21 <DIR> .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 <DIR> error
2025/01/11 09:53 0 nginx.htaccess
2025/01/15 11:30 <DIR> vendor7 File(s) 1,946 bytes5 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 |
通过上面的表格可以看到逻辑与、逻辑或有两种运算符,它们的运算规则是一样的,但是它们运算的优先级不一样。
#示例
<?php$a = true;$b = false;//逻辑与$c = $a && $b; // $c 输出false,因为 && 的优先级高于赋值运算符$d = $a and $b; // $d 输出true,因为 and 的优先级低于赋值//逻辑或$e = $a || $b; // $e 输出true,因为 || 的优先级高于赋值运算符$f = $b or $a; // $f 输出false,因为 or 的优先级低于赋值
结论:
and和or运算符的优先级低于赋值运算符,&& 和 ||运算符的优先级高于and和or。
and和or在使用的时候需要注意优先级,否则会导致意料之外的结果,通常建议使用 && 和 ||。
字符串运算符
字符串有两个运算符。
- 连接运算符(“.”),它返回其左右参数连接后的字符串。
- 连接赋值运算符(“.=”),它将右边参数附加到左边的参数之后。
#示例
<?php$a = "Hello ";$b = $a . "World!";var_dump($b);$a = "Hello ";$a .= "World!";var_dump($a);
执行结果
string(12) "Hello World!"
string(12) "Hello World!"
数组运算符
数组也有等于、全等、不等、不全等这些运算法,这里主要介绍联合运算符(+):把右边的数组元素加到左边的数组中,如果有相同的键名,则只保留左边的。
#示例
<?php$a = ['a'=>'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 变量是否属于某一个类的实例。
#示例
<?phpclass A {}class B extends A {}class C {}$obj_b = new B();var_dump($obj_b instanceof A);var_dump($obj_b instanceof C);
执行结果
bool(true)
bool(false)
由于class B继承了class A,因此对象B也属于class A。
完结
如果你在阅读这篇文章时有所收获,请不要忘记点赞评论加关注,你的支持是我创作的最大动力。当然,如果你在文中发现了疏漏之处,或是有着其他的见解,欢迎私信与我交流。
我是老卢,一个热爱分享、不断探索的知识旅者。