1. 算数运算符
+ - * / % ++ --
%
取模需要注意
注意:求模运算符”%”也称取余运算符,在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:如果独立语句中进行自加运算,前自加后自加没有区别 。
- 推论2:如果前自加后自加是放在别的语句中,则会有所区别。
- 推论3: 前加加比后加加效率略高(在循环中建议使用前加加)
下面说明了前缀模式和后缀模式之间的区别
<?php
$a = 10; //声明一个整型变量$a,值为10
$b = $a++ + ++$a;//先使用$a的值10加上$a自增1后再自增1后的值12,再赋值$b
echo $a.'<br/>';//12
echo $b.'<br/>';//22
$b = $a-- - --$a;//先使用$a的值12减去$a自减1的值10,再赋值给$b
echo $a.'<br/>';//输出10
echo $b.'<br/>';//输出2
字符串变量的算数运算
只能递增,不能递减,’Z’+1得到’AA’.并且只支持纯字母(a-z和A-Z)。例如:
<?php $i = 'a'; for($n=0;$n<52;$n++){ echo ++$i."<br/>"; } 结果:b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba
2. 字符串运算符
只有一个,英文句号”.”。可以将一个字符串和任何标量数据类型连接起来,合并成的都是新的字符串。
3. 赋值运算符
只有一个: =
衍生多个: += -= *= /= %= .=
这些衍生的赋值运算符,是这种运算的一个简化形式
$v2 = $v2 [运算符] 数据2 //某个变量跟另一个数据进行某种运算之后的结果再存入该变量 ``` *对比(它不是这种形式的简化)* ```
php $v2 = 数据2 [运算符] $v2; //这种形式不应该简化
4. 比较运算符
> = >= <= ==(等于) ===(全等于) <>或!=(不相等) !===(非全等于)
注意:参考手册〉〉附录〉〉类型比较表 |运算符|说明| |:—|:—| |==|左边操作数等于右边操作数时返回true,否则返回false|
|===|左边操作数等于右边操作数,并且它们的类型也相同时返回true,否则返回false|
|<>或!=|当左边操作数不等于右边操作数时返回true,返回false|
|!===|当左边操作数不等于右边操作数,或者它们的类型不相同时返回true,否则返回false|
常见不同类型的比较—-非正常比较
- 正常比较——数字的大小比较
- 如果有布尔值,均转为布尔值比较:规则:true > false
- 否则,如果有数字,均转为数字比较:
- 否则,如果两边都是纯数字字符串,转为数字比较
- 否则,就按字符串比较
- “abc35”>”abc123” ==>true(遵循字符比较规则)
- “35”>”123” ==>false(遵循数字比较规则)
- 字符串的比较规则为:按字符的先后顺序依次一个一个比较,发现哪个大,则就表示整体大,后续不再比较
5. 逻辑运算符:&& || !
5.1 逻辑与短路
在实际运用中,参与逻辑运算的数据,往往都不是直接的布尔值,而是有关计算之后的布尔结果值
if( IsFemale( $uName ) && isAge($uName) > 18){
echo “女士优先”
}
//此时,如果IsChildren()函数如果判断为false,则isAge()就不再调用了,自然也不再进行大于12的判断,这就是称为"短路现象"
5.2 短路现象之逻辑或短路:
if( IsFemale( $uName ) || isAge($uName) < 18){
......echo “有限照顾女士或未成年人”
}
//此时,如果IsFemale()函数判断的结果是true,那么后续的函数isAge()就不再调用,自然也不再进行小于18的判断,这就是“或运算符短路现象”