php运算成分

来源:互联网 发布:十年前马云教你做淘宝 编辑:程序博客网 时间:2024/05/16 06:03

算术运算符:+、-、*、/、%、++、--

注意:取余运算符%,先取整,再取余。对比js中,不会进行取整处理

示例:

$v1=7.5%3;//结果为1

$v1=7.5%3.5; //结果为1

对比js

var v1=7.5%3; //结果为1.5

var v2=7.5%3.5;//结果为0.5

自增自减运算符++、--

1.常规:对数字进行自加1或自减1

2.字符串:只能自增,且自增效果是“下一个字符”

3.布尔值自增自减无效

4.null递减无效,递增结果为1

示例:

   $s1=”ABC”;

   $s1++;//$s1为“ABD”

++$s1与 $s1++的区别:

++$s1,先完成变量的递增运算,再取得该变量的值参与别的运算。

$s1++,先将原来变量的值临时存储,再将变量值递增,最后再将临时存储的值参与别的运算

注意:独立语句中自加运算,两者没有区别。放在别的语句中,会有区别,++$s1比$s1++效率略高,建议在循环中使用++$s1

示例:

v1=10;

v2=10;

$s1=++v1;

$s2=v2++;

结果:s1=11 ,s2=10,v1=11,v2=11

 

 

比较运算符

包括:>  <  >=  <=  ==(松散相等)  ===(严格相等) !=  !===

==与===的区别:

==松散相等,比较的是两个数据“类型转换后”是否有可能相等,常常认为是“数据内容是否相同”

===严格相等,全等,只有两个数据的类型和数据内容都完全一致,才相等

注:特别常用的转换(不管是自动转换还是强制转换),就是字符串转换为数字:

”5“==》5    //整数

”5.5“==》5.5     //浮点数

”5abc“==》5     //整数

”5.5ab“=》5.5    //浮点数

”abc5“=》0     //整数

”abc“=》0     //整数

” “=》0    //整数

参考:参考手册》附录》类型比较表

常见不同类型的比较(只要指标量数据)

有布尔值,转为布尔值比较

有数字转为数字比较

两边都是纯数字字符串,转为数字比较

否则按字符串比较,字符串的比较按字符的先后顺序依次一个一个的比较,发现哪个大,则表示整体大,后续不再进行比较。

示例:”abc35“>”abc123“  true(遵循字符比较规律)

 

逻辑运算符

都是针对布尔类型的值进行运算,如果不是,就转成布尔值

逻辑与&&:只有两个都是true,结果才是true

逻辑或||:只要有一个是true,结果就是true

逻辑非!

短路现象(短路现象用于优化性能,将较复杂的程序放在后边

逻辑与短路:

$S1>2  &&  $s2>1 当$S1>2的结果是false时,后续不再进行计算,称为”短路现象“。

逻辑或短路:

$S1>2  ||  $s2>1当$S1>2的结果是true时,后续不再进行计算,称为”短路现象“。

 

字符串运算符

只有一个:.

衍生一个:.=

会将运算符两边的数据转化为字符串

对比js:+(具有双重含义,加法或链接字符串)

 

赋值运算符

只有一个:=

衍生多个:+=  -=  *=  /=  %=  .=

基本形式为:$变量赋值运算符  数据;

 

条件(三目)运算符:至少需要3个数据参与

形式为:数据1?数据2:数据3;(数据1作为布尔值来使用)

含义:如果数据1为true,那运算结果为数据2,否则运算结果为数据3

可转换为if-else语句实现

 

位运算符

位运算符的基本规则:

1.位运算符都是针对整数的二进制数字形式而进行的

2.按位与运算规则&:只有同时为1时,结果为1

3.按位或运算规则|:有一个1时,结果为1

4.按位非运算~:~1为0,~0为1

5.按位异或运算^: 相异为1

按位与运算  &

形式:A&B  //A、B都为数字,其实是常规的10进制数,系统会按二进制计算

含义:将A和B的二进制形式的每一个位上的二进制数字进行按位与&运算之后的结果。

按位或运算  |

形式:A}B  //A、B都为数字,其实是常规的10进制数,系统会按二进制计算

含义:将A和B的二进制形式的每一个位上的二进制数字进行按位或|运算之后的结果。

按位左移运算:<<

形式:A<<n;   //A是一个要被移动的数字,按二进制取运算,n是要移动的位数

含义:将数字A的二进制形式的每一个位上的数字往左边移动指定的位数n,则最左边的n为移出去后就不管了,最右边空出来的n位,补0

按位右移运算:>>

形式:A>>n;   //A是一个要被移动的数字,按二进制取运算,n是要移动的位数

含义:将数字A的二进制形式的每一个位上的数字往右边移动指定的位数n,则最右边的n为移出去后就不管了,最右边空出来的n位,补0(对正数来说,实际是补符号位)

按位非:将一个数字的二进制形式的每一个数字取反所得到的结果

按位异或:将两个整数的二进制形式的每一个对应数字进行异或运算后的结果

 

应用:管理一组对象(事物)的开关状态

开关状态:就是某种数据,它有2个值可用:true,false,1,0等

一组事物指:多个数据的任意可能的出现状态

我们假设有5个灯泡的开关需要管理:

    1.确定每个灯泡的状态:开,关;

2.可以指定打开任意一个灯泡;

3.可以指定关闭任意一个灯泡;

设定前提:这5个灯泡有明确的顺序,我们将设定5个变量(常量其实也行)

假设1-5个灯泡的位置是从右往左边数—对应数字的位数

第一个灯泡:$d1=1;   //00000001

第二个灯泡:$d2=2;   //00000010

第三个灯泡:$d3=4;   //00000100

第四个灯泡:$d4=8;   //00001000

第五个灯泡:$d5=16;  //00010000

则所有灯泡的总的状态,就可以使用一个变量来描述,如:

$state =7;  //00000111 表示第1,2,,3灯泡亮

确定一个灯泡的开关状态:

$s1=$state & $dn; //这里n表示1-5之间的任意一个

结果大于0,则该灯泡亮,否则表示灭

打开指定的灯泡:

  $state=$state | $dn;   //这里n表示1-5之间的任意一个

关闭指定的灯泡:

$state= $state & ~$dn;   //这里n表示1-5之间的任意一个

 

示例:

const D1=1;

const D2=2;

const D3=4;

const D4=8;

const D5=16; //表示5个原始数据

 

$state=13;  //表示所有灯的总状态

 

showAll($state);

 

//打开第二个

$state =$state | D2;

echo ”打开第2个灯泡后:”;

showAll($state);

 

//关闭第1个

$state =$state & ~D1;

showAll($state);

 

function showAll($state){

echo “<p>”;

for($i=1;$i<=5;++$i){

$temp=”D”.$i;

$r1=$state &constant($temp);

If($r1>0){

echo “灯{$i}亮”;

}else{

echo “灯{$i}灭”;

}

}

echo “</p>”;

}

 

 

 

原码、反码、补码(二进制数)

1.第一位为符号位,0代表正数,1代表负数

2.正数的反码是其本身,负数的反码,就是将原码的非符号位,每一位取反

3.正数的补码是其本身,负数的补码,就是将原码的非符号位,每一位取反,整体加1(即反码加1)

总结:

1.数据在CPU内都是按补码计算

2.原码、反码、补码的转换时系统内部的工作,且转换时符号位不变

3.用补码运算时,符号位参与运算(即当作一个普通的二进制位的数字进行运算)

 

 

数组运算符

联合(+):将右边的数组项合并到左边数组的后面,得到一个新数组,如果有重复键,则结果以左边的为准。

示例:

$v1=array(1,2,3,4);

$v2=array(5,6,7,8,9);

$r1=$v1+$v2;  //结果是array(1,2,3,4,9)

相等(==):如果两个有相同的键名和键值(可以顺序不同,或类型不同),则返回true

示例:

$v1=array(1,2,3,4);

$v2=array(4,3,2,1);

$v3=array(3=>4,1=>2,0=>1,2=>3);

此时:$v1与$v2相等吗? 不相等

此时:$v1与$v3相等吗? 相等

注意:php中,数组元素的顺序,不是有下标(键名)决定的,而是完全由加入的顺序来决定。

 

错误控制运算符@

通常用于一个”可能“发生错误的表达式的前面—最常用的情形是连接数据库

示例:

$link=@masql_connect(“localhost”,”root”,”1234”)or die(“数据库连接失败”);

//如果连接成功,不执行die语句,否则执行。or也是逻辑运算符,通常只用在这种位置

用在程序开发测试阶段无法预测的可能出错的位置—一般是获取外部资源的时候

 

运算符的优先级问题

括号最优先,赋值最落后,先乘除后加减,大致:算术运算符>比较运算符>逻辑运算符(除了非运算)

0 0
原创粉丝点击