天天看点

2-2. PHP 运算符

4)比较运算符

== 值是否相等

如果值相等则是true,不相等就是 false

$a=10;
$b=10;
var_dump($a==$b); //true
           

=== 全等(值要相等,类型也要相等)

$a=11;
$b='11';
var_dump($a==$b); //true, php里'11'会被强制类型转换成int 11
var_dump($a===$b); //false
           

!= 值是否不相等

如果两边操作数的值不相等结果是true,否则就是false

 <> 值是否不相等,和上面!=用法相同

!== 不全等

$a=11;
$b='11';
var_dump($a!=$b); //false
var_dump($a!==$b); //true
           

<、>、<=、>=

注:一般不用echo输出的原因是输出的值是布尔类型,看不出变量的具体类型

5)逻辑运算符

参与逻辑运算的表达式是布尔类型的值,如果不是布尔类型的值会被自动转换成布尔类型的值,然后再参与运算

逻辑与:&&

左右表达式两边的结果都是true的时候结果为true,否则只要其中一个为false,运算的结果就是false

$a=true;
$b=false;
var_dump($a && $b); //false
           

注:以下的值被认为是false,其他的值都被认为true

布尔值false、0、浮点型0.0、空白字符串和字符串0、没有成员的数组、NULL

逻辑或:||

左右两边的表达式有一个是true,那么结果就是true

逻辑异或:xor

左右两边表达式的值不一样的时候结果就是true,反正为false

$a=false;
$b=true;
var_dump($a xor $b); //true
           

逻辑非:!

$a=true;
var_dump(!$a); //false
           

6)位运算符(不怎么用)

7)其他运算符:

三元运算    表达式1 ? 表达式2 :表达式3

如果表达式1的值为true,那么执行表达式2,否则就执行表达式3

$a=false ? 10 : 20;
echo $a; //20
           

系统命令执行符(设计跨平台):`` 

$a=`ipconfig`;
$b=`ipconfig`;
var_dump($b);
           

屏蔽表达式可能的错误:@

echo @$a;
           

注:@一定是放在表达式前面

=>(数组)

->(对象)

instanceof(对象)

8)运算符的优先级

优先级:谁的优先级高先算谁

结合方向:规定了从哪个方向开始算

优先级、结合方向归纳:

1. 无,递增递减

2. 右,逻辑非

3. 左,乘、除、取余

4. 左,加、减、字符串连接符

5. 无,包含大于或小于号的运算符

6. 无,不包含大于或小于号的运算符

7. 左,逻辑与 &&

8. 左,逻辑或 ||

9. 左,?:

10. 右,赋值运算符

11. 左,逻辑异或 xor

注:使用括号可以增强代码的可读性

短路问题:

只要有逻辑运算符(逻辑与、逻辑或),那么运算结果就是一个true或false

那运算的过程就不重要了

$a=false;
$b=1;
$a && ++$b;
echo $b; //短路,上面++$b被短路了,$b还是1