算数运算符:
+ - * /
其中php的%算法很奇怪,会得到整数
$v1 = 7.5%3 //1
$v2 = 7.5%3.5 // 1
而pytho和javascript则是比较正常的一种结果。不会进行取整计算
自增自减运算符:
常规:对数字进行自加1
字符串只能够自增加,且自增加的效果就是下一个字符
布尔值递增递减无效
null递减无效,递增结果为1
$s1 = 'ABC'; $s2 = 'ABc'; $s3 = "XZZ"; $s1 ++;//特殊语法:在php中字符串也可以像数字一样 $s2 ++; $s3 ++; echo "<br/>s1 = $s1, s2 = $s2, s3 =$s3";结果是:s1 = ABD, s2 = ABd, s3 =YAA
前++和后++的区别:
前++:先完成变量的递增运算,再将该值参与到其他的运算
后++: 先将原来的变量值临时存储,再将变量值递增,最后将临时存储的值参与别的运算
推论1:如果独立语句中进行自加运算,前后自加没有区别。
推论2:如果前后自加放在别的语句中,则会有区别
$n1 = 10; $n2 = 10; $n1 ++; ++ $n2;//这两个自家运算,结果一样 echo "<br/>n1 = $n1, n2 = $n2"; $s1 = $n1 ++ ; $s2 = ++ $n2;//这里会有区别,s1和s2不同,但是n1和n2还是一样 echo "<br/>s1 = $s1, s2 = $s2"; //n1 = 11, n2 = 11 //s1 = 11, s2 = 12
特别常用的一个转换(不管是自动转换还是强制转换),就是字符串转换为数字:
“5” ==>> 5 //整数
“5.5” ==>> 5.5浮点数
“5abc” ==>> 5整数
“5.5ab” ==>> 5.5浮点数
“abc5” ==>> 0整数
“abc” ==>> 0整数
“” ==>> 0
常见不同类型的比较(主要指标量类型的数据)——非正常比较
-
正常比较——数字的大小比较
-
如果有布尔值,均转为布尔值比较:规则:true> false
-
否则,如果有数字,均转为数字比较:
-
否则,如果两边都是纯数字字符串,转为数字比较(这里python不同)
-
否则,就按字符串比较
'123'>'35'
逻辑运算符:&& || !
前提:都是针对布尔类型的值进行计算,如果不是布尔值,先进行转换。
逻辑与:
&&
逻辑或:
||
逻辑非:
!
短路现象之逻辑与短路:
在实际应用中,参与逻辑运算的数据,往往都不是直接的布尔值。
if( IsFemale( $uName ) && isAge($uName) > 18){
......echo“女士优先”
}
此时,如果IsFemale()函数判断的结果是false,那么后续的函数isAge()就不再调用,自然也不再进行大于18的判断,这是就称为“短路现象”
短路现象之逻辑或短路:
if( IsFemale( $uName ) || isAge($uName) < 18){
......echo“有限照顾女士或未成年人”
}
此时,如果IsFemale()函数判断的结果是true,那么后续的函数isAge()就不再调用,自然也不再进行小于18的判断,这就是“或运算符短路现象”
赋值运算符:
只有一个: =
衍生多个: += -= ×= /= %= .=
这些衍生的赋值运算符,是这种运算的一个简化形式:
$v2 = $v2[运算符] 数据2;//某个变量跟一个数据进行某种程度之后的计算的结果再一次存入该变量,这些衍生的赋值运算符,就是这种
运算的简化方式。
条件运算符:
其形式为:
数据1?数据2:数据3;
通常数据1最终应该是1个布尔值(如果不是,会转化成 布尔值来使用)
含义:
如果数据1为true,则计算结果为数据2,否则计算结果为数据3
典型举例:
$score = 88;
$result = $score >= 60 ? '及格' : '不及格'//结果是及格
$result2 = $score < 60 ? '及格’:'不及格'//结果是不及格