PHP笔记之运算符

注意该笔记只记录部分:

涉及:比较运算符(>  >=  <   <=  ==  !=   ===  !==),

字符串运算符(符号只有一个:。 也衍生出另一个:  .=   例:“ab” . 3 ==>> “ab3”;),

赋值运算符    (+= -= *=   /=    %=    .= ),

条件(三目,三元)运算符,

数组运算符(判断两个或以上的数组关系,符号:+   ==   !=   ==  !==    ===

目录

算术运算符

自增自减运算符:

前自增和后自增的区别(自减类似)

逻辑运算符

基本运算规则(真值表):

逻辑运算符的“短路现象”:

位运算符

基础规定

整数的按位与运算(&)

整数的按位或运算:

整数的按位左移运算

补充知识:原码,反码,补码

错误控制运算符@:


算术运算符

基础:

符号有:+   -   *   /   %

说明:

   1.他们都是针对数字进行的运算;

   2.如果他们的两边有不是数字的数据,就会(自动)转换为数字;

   3.其中取余运算(取模运算)%,它只针对“整数”进行运算,如果不是,会自动截取为整数。

11. 3  %  3 相当于 11  % 3;

11.8  %  3. 8  相当于 11 % 3;

自增自减运算符:

  • 常规:对数字进行自加1或自减1。
  • 字符串: 只能自增,且自增的效果就是“下一个字符”,只能针对字母或数字进行自加:
  • 布尔值递增递减无效
  • null递减无效,递增结果为1

字符串自增的例子:(以下例子:类似199+1=200,他们进1了,所以就有了xyz+1=xza ==>z加1变a,y进1变z)

PHP笔记之运算符

前自增和后自增的区别(自减类似)

PHP笔记之运算符

通常,我们在循环中,推荐使用前加加,比如:

for($i = 1;  $i < 10000;  ++$i){ ....... }

演示前加加后加加进行1千万次的“效率比较”:

PHP笔记之运算符

逻辑运算符

逻辑运算符都是针对“布尔值”进行的运算。

如果不是布尔值,就会转换为布尔值进行;

布尔值只有2个:true,false

基本运算规则(真值表):

逻辑与规则:

true  &&  true  ==>> true

true  &&  false  ==>>false

false  &&  true  ==>>false

false  &&  false  ==>>false

总结:只有2个都是true,结果才是true

只要有一个是false,结果就是false

逻辑或规则:

true  ||  true  ==>> true

true  ||  false  ==>>true

false  ||  true  ==>>true

false  ||  false  ==>>false

总结:只有2个都是false,结果才是false

只要有一个是true,结果就是true

逻辑非规则:

!true  ==>> false

!false  ==>> true

逻辑运算符的“短路现象”:

逻辑与短路:

PHP笔记之运算符

结果:如果一个语句中,通过与运算需要进行多项判断,而且不同的判断具有明显不同的“复杂程度”,则我们应该将简单的判断放在前面,这时候我们就可以利用短路现象以达到提高效率的目的。

逻辑或短路:

PHP笔记之运算符

结果:如果一个语句中,通过或运算需要进行多项判断,而且不同的判断具有明显不同的“复杂程度”,则我们应该将简单的判断放在前面,这时候我们就可以利用短路现象以达到提高效率的目的。

位运算符

基础规定

1,位是什么?就是2进制数字的每一个“位”,一个整数数字,有(由)32个位构成!(整数类型为4字节,1个字节等于8位)

2,位运算符是仅仅针对整数进行的运算符;

3,位运算符有如下几个

&: 按位与;

|: 按位或;

~: 按位非;按位取反;

^: 按位异或;

4,位运算符的基本语法规则:

按位与基本规则:

1  &  1  ==>>  1       1  &  0  ==>>  0

0  &  1  ==>>  0       0  &  0  ==>>  0

按位或基本规则:

1  |  1  ==>>  1       1  |  0  ==>>  1

0  |  1  ==>>  1        0  |  0  ==>>  0

按位非基本规则:

~1  ==>>  0

~0  ==>> 1

按位异或基本规则:

1  ^  1  ==>>  0      1  ^  0  ==>>  1

0  ^  1  ==>>  1      0  ^  0  ==>>  0

可见,按位异或的规则是:相同为0,不同为1

整数的按位与运算(&)

形式:

$n1  &  $n2; //n1,n2是2个任意整数;

含义:

将该2个整数的二进制数字形式(注意,都是32位)的每一个对应位上的数字进行基本按位与运算之后的结果!

注意:他们运算的结果,其实仍然是一个普通的数字(10进制)。

示例图示(只用8个位来演示):

$r1 = 10 & 20;

10的2进制

0

0

0

0

1

0

1

0

20的2进制

0

0

0

1

0

1

0

0

&运算结果:

0

0

0

0

0

0

0

0

代码验证:

PHP笔记之运算符

整数的按位或运算:

形式:

$n1  |  $n2; //n1,n2是2个任意整数;

含义:

将该2个整数的二进制数字形式(注意,都是32位)的每一个对应位上的数字进行基本按位或运算之后的结果!

注意:他们运算的结果,其实仍然是一个普通的数字(10进制)。

示例图示(只用8个位来演示):

$r1 = 10 | 20;

10的2进制

0

0

0

0

1

0

1

0

20的2进制

0

0

0

1

0

1

0

0

|运算结果:

0

0

0

1

1

1

1

0

则结果该数据值大小为: 1*24  +  1 * 23  +  1*22  + 1* 21  + 0  =  16 + 8 + 4 + 2 = 30

代码验证:

PHP笔记之运算符

 

整数的按位左移运算

形式:

$n1  <<  $m

含义:

将十进制数字n1的二进制数字形式(也是32位的)的每一个位上的数字都一次性往左边移动m位,

并将右边空出来的位置补0,左边冒出去的不管,这样操作之后得到的结果。

示例图示(只用8个位来演示):

$r1 = 10 <<  2;     (小技巧,左移几位,n1就乘以2的m次方---10*2^2=40)

PHP笔记之运算符

可见,结果为:25  +  23  =  32 + 8  = 40

代码验证:

PHP笔记之运算符

补充知识:原码,反码,补码

原码:

就是一个二进制数字,从“数学观念”上来表达出的形式。其中,我们规定:

一个数字的最左边一位是“符号位”,0表示正数,1表示负数;

比如:

PHP笔记之运算符

反码:

正数的反码就是其本身(即不变);

负数的反码是:符号位不变,其他位取反;

比如:

PHP笔记之运算符

补码:

正数的补码就是其本身(即不变);

负数的补码是:符号位不变,其他位取反后+1——即反码+1

PHP笔记之运算符

一个小提示:计算机内部的运算,实际全都是使用补码进行的,而且运算的时候,符号位不再区分,直接也当做“数据”参与运算:

示例1:

5+3:

PHP笔记之运算符

示例2: 5-3:

实际上,cpu内部,会将“减法”运算,转换为“加法运算”,即:5 + (-3)

PHP笔记之运算符

错误控制运算符@:

通常就用在一个地方:

$link  =  @mysql_connect(“数据库服务器地址”, “用户名”,  “密码”);

作用是:

如果该连接数据的语句失败(比如连接不上),则屏蔽该失败的错误提示!