PHP运算符
算术运算符:
有以下几个:+ ,- ,* ,/ ,% ,++ ,--
注意:取余运算%,先取整,再取余
$v1 = 7.5%3; //结果为:1
$v2 = 7.5%3.5; //结果为:1
对比JS中:(JS中不会进行取整处理)
var v1 = 7.5%3; //结果是:1.5
var v2 = 7.5%3.5; //结果是:0.5
自增自减运算符:
常规:对数字进行自加1或自减1
字符串:只能自增,且自增的效果就是“下一个字符”
布尔值递增递减无效
null递减无效,递增结果为1
前自增和后自增的区别:
前++:先完成变量的递增运算,再取得该变量的值参与别的运算
后++:先将原来变量的值临时存储,再将变量值递增,最后再将临时存储的值参与别的运算
推论1:如果独立语句中时行自加运算,前自加后自加没有区别
推论2:如果前++后++放在别的语句中,则会有所区别
推论3:前++比后++效率略高(在循环中建议使用前++)
比较运算符:
包括:> >= < <= ==(松散相等) != ===(严格相等) !==
==与===的区别:
==:松散相等,比较的是两个数据“类型转换之后”是否有可能相等,也常常认为是“数据内容是否相等。
===:严格相等,全等,只有两个数据的类型与数据的内容都完全一致,才相等。
参考手册》附录》类型比较表
常见不同类型的比较(主要指标量类型的数据):
有布尔值,均转为布尔值比较,规则:true > false
否则,如果有数字,均转为数字比较
否则,如果两边都是纯数字字符串,转为数字比较
否则就按字符串比较。 “abc35" > "abc123" 结果为:true
字符串的比较规则为:按字符的先后顺序依次一个一个比较,发现哪个大,则就表示整体大,后续不再比较。
逻辑运算符:&& || !
前提:都是针对布尔类型的值进行的运算,如果不是布尔,就会转换为布尔。
逻辑与:&&
规则(真值表):
true&&true =>true
true&&false =>false
false&&true =>false
false&&false =>false
只有两个都是true,结果才是true;或者只要有一个是false,结果就为false
逻辑或:||
规则(真值表):
true||true =>true
true||false =>true
false||true =>true
false||false =>false
只有两个都是false,结果才是false;或者只要有一个是true,结果变为true
逻辑非:
!true =>false;
!false =>true;
短路现象之逻辑与短路:
在实际应用中,参与逻辑运算的数据,往往都不是直接的布尔值,而是有关计算之后的布尔结果值。大致如下:
if(IsFemale($uName) && IsAge($uName) >18) {
......echo "Lady first";
}
此时,如果IsFemale()函数判断的结果是false,那么后续的函数isAage(),就不再调用,自然也不再进行大于18的判断,这就称为“短路现象”。
短路现象之逻辑或短路:
if(IsFemale($uName) || IsAge($uName) <18) {
......echo "Children or women first";
}
此时,如果IsFemale()函数判断的结果是true,那么后续的函数isAage(),就不再调用,自然也不再进行小于18的判断,这就是“或运算符短路现象”。
字符串运算符:只有一个:“.”,衍生出一个“.=”,会将运算符两边的数据转换为字符串。
对比JS:+ (具有双重含义,此时就需要一定的“判断”)
赋值运算符:只有一个:“=”,衍生出多个:+=,-=,*=,/=,%=,.=
条件(三目)运算符:
一般的运算符需要2个数据参与。
有几个运算符只需要一个数据参与:++,--,!
条件运算符就需要至少3个数据参与,形式为:数据1 ? 数据2 :数据3;
通常,数据1最终应该是一个布尔值(如果不是,则会当作布尔值来使用)。
含义:
如果数据1为true,则运算结果为数据2,否则运算结果为数据3
举例:
$score = 66;
$result = $score >= 60 ? "及格" : "不及格"; //结果为:及格
共同学习,写下你的评论
评论加载中...
作者其他优质文章