4.字符串优先级
运算符
Foo()与@foo()之间的区别
@错误控制符
当将其放在一个php表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
延伸:php所有运算符考点
运算符优先级
递增/递减>!>算术运算符>大小比较>(不)相等比较>引用>位运算符 (^)>位运算符(|)>逻辑与>逻辑或>三目>赋值> and > xor > or
括号的使用可以增加代码的可读性,推荐使用
比较运算符
==和===的区别
==值进行比较
===值和类型进行比较
等值判断(false的七种情况)
整型0,浮点0,布尔false,空字符串,0字符串,空数组,NULL
递增递减运算符
递增递减运算不影响布尔值
True++是true,true--是true
False++是false,False--是false
递减NULL值没有效果 ;Null--还是null
递增NULL值为1;null++是1
逻辑预算符
短路作用
$a=true || $b=3;前面是true,后面不执行
$b=false && $a==1;前面是false,后面不执行;
只要有一个false,整体为false
&& II and or优先级由高到低
$a=false || true;
由于||的优先级高于=,所以先执行false || true,结果为ture,$a为true
$b=false or true;
由于or的优先级最低,所以,先执行$b=false结果$b为false;
$b=false or true;整体为true。
false or true结果为true
例题1:判断优先级。短路情况
解析:
[if !supportLists]1.[endif]$a=3; =是赋值,不是相等
[if !supportLists]2.[endif]优先级顺序为> || =
If中的内容应该为
($a=(3>0 || $b=3>0))
[if !supportLists]3.[endif]先执行3>0 || $b=3>0,因为有||运算符,3>0 || $b=3>0前面为true,后面不执行,所以$a为true;$b为0;
[if !supportLists]4.[endif]然后执行$a++;也就是true++,为true ; $b++;为0
[if !supportLists]5.[endif]结果为$a=1;$b=1;
例题2
$a=true;
$a++;
echo $a;
结果为1
解析:
布尔值:true++为true,布尔值的true为1
例题3:
$a=true;
$b=$a+1;
var_dump($b);
结果int(2)
例题4:
$a=true;
echo $a++;结果为1
echo $a;结果为1