编程之路之php运算符详解
一、什么是运算符
简而言之完成特定功能 的符号,称之为运算符。
二、算术运算符
+ 加,取正
- 减,取负
* 乘
/ 除
% 取余,取模
取余运算只和被除数的正负有关
三、字符串运算符
字符串运算符只有一个,点,用于连接字符串
如果字符串连接的结果不是作为值赋给另一个变量,在直接输出时,可以用下面的方式
用逗号分开要显示的参数,而不是将字符串连接(会产生一个临时变量来存储它)
提高了程序的效率!
四、赋值运算符
PHP使用=等号作为赋值运算符
我们要考虑左边是什么,右边是什么?有一个名词,叫左值,右值
左值必须是一个变量。不能是一个值
右值可以是变量,常量,函数返回值,表达式。。。。
五、自赋值运算符
是一种特殊的格式:
+= -= *= /= %= .=
什么是自赋值?
就是变量先参与运算,再把运算的结果赋给自己。
$a += 10; 相当于 $a = $a + 10; //算术
$str .= ‘php0701’; $str = $str . ‘php0701’; //字符串
目:参与运算的运算数个数。
比如算术运算需要2个运算数。算术运算符还有一种叫法叫双目运算符。
六、三目运算符
也有叫三元运算符。 ?:
格式: 表达式1 ? 表达式2 : 表达式3
运算结果:如果表达式1为true,则结果是表达式2的值。
如果表达式1为false,则结果是表达式3的值
经常用于表单提交的参数接收
其实三目表达式可以用if/else代替
七、递增递减运算符
++ --
运算数先加1或减1,然后再把结果赋给自己。
$i++ 相当于 $i = $i + 1
递增递减运算符根据所在位置的不同,可分为前置和后置
前置: ++$i --$i
后置: $i++ $i—
前置的++,会将加1后的数直接赋给自己,变量的值就改变了
后置的++,会先保留自己的值到一个临时变量,然后加1赋给自己,但是参与运算是用的临时的变量
有两个事情要说清楚:
- 当++或—不参与运算时,最好使用前置(节省空间占用,提高效率)
For($i=0; $i<10; ++$i)
- 当++或—参与运算时,一定要分清楚应该使用前置或后置,因为结果不一样!
八、错误控制运算符
控制错误信息是否显示的运算符:@
使用了这个运算符后,将控制错误信息的输出为不显示。
- 目的并不是单纯折屏幕错误,而是想用我们的错误信息代替系统的信息。
- 错误无关紧要,不想让它输出
九、比较运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于 比较的变量值相等
!= <> 不等于
=== 全等 比较的变量值和类型都相同
!== 不全等
面试题:等于和全等的区别,试举例
十、数组运算符
+ 数组相加,两个数组有相同的键值对时,以左边的数组为主,右边多出来的将增加
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于 两个数组具有相同的键值对
!= 不等于
=== 全等 两个数组具有相同的键值对,且顺序类型都相同
!== 不全等
比较的例子
全等和等于的例子
数组相加 的例子
十一、逻辑运算符
通常用于表示两个表达式之间的关系
&& and 逻辑与
|| or 逻辑或
! 逻辑非
Xor 逻辑异或
逻辑与
表达式1 |
表达式2 |
结果 |
True |
True |
true |
True |
False |
False |
False |
True |
False |
False |
false |
false |
逻辑或
表达式1 |
表达式2 |
结果 |
True |
True |
true |
True |
False |
True |
False |
True |
True |
False |
false |
false |
逻辑非 !$flag
表达式 |
结果 |
True |
False |
false |
true |
逻辑异或(只有当一个表达式为真的时候,整个结果才为真)
表达式1 |
表达式2 |
结果 |
True |
True |
false |
True |
False |
True |
False |
True |
true |
False |
false |
false |
小技巧:短路现象
当我们执行逻辑与、逻辑或的时候,可能会发生短路的现象
逻辑或:会当第一个表达式为真时,短路第二个表达式
十二、原码、反码和补码
PHP中,参与位运算的只能是整数。
整数占用4个字节,32个位。最高位是符号位,0代表正数,1代表负数。
由于计算机不会做减法,把减法当成加法做
原码:就是按最高位是符号位,其它位是数据方式
反码:正数的反码不变,负数的反码除符号位外按位取反
补码:正数的补码还是不变,负数的补码是其反码+1
正数的三码一致。三码运算时符号位不参与。
补码=(反码+1)
原码=取反(补码-1)
计算机实际存储和运算都是使用的补码!
十三、位运算符
位运算时,所有位都参与
& 按位与
| 按位或
~ 按位取反
^ 按位异或 两个操作数相同的位,只有一个是2,一个是0时,才为1
<<左移
>>右移
1.左移操作
操作数所有的位向左移动,右侧用0来补
当操作数很大时,会相当于溢出
负数在左移操作时,可能会丢失符号位
左移操作相当于每一次给操作数乘以2,但不绝对
2.右移操作
操作数所有的位向右移动,左边用符号位来补
右移应该不会导致数的符号的改变
右移一次相当于操作数除以2
不是2的倍数时
十四、运算符的优先级
当运算数有两个运算符与其与关时,运算符优先级高的先运算。
如果运算符的优先级相同时,看结合方向。
左结合的例子
右结合的例子
一个特例,当左值无法确定时,会调整优先级执行顺序
发个邀请:
如果你正好想学习php,可以与我一起交流,我的VX:feilueze333。下面资料免费赠送。