前言:
下面所讲的知识点都是个人从书中和各种教学视频里总结出来的一些小知识,可能总结的不是很到位,如果有总结的不对的地方,还希望各位简友指点...如果你觉得这篇文章对你也有帮助,当然,请不要吝啬你的爱心.你们的爱心是我总结的动力!
什么是运算符?
就是对数据进行某种所需要的运算的语法符号,比如加减乘除,或比较大小,判断真假.
运算符有哪几个?
单目运算符:只需要一个数据,但必须是变量.
双目运算符:需要两个数据,可以使变量,也可以是直接的数据本身.
三目运算符:需要三个数据才能运算,也叫"三元运算符".只有一个三元运算符.
运算符的分类:
赋值运算符:"=";
算数运算符:"+ - * / %";
连接运算符: "."
自操作运算符:" ++ --";
比较运算符:" >大于 >= 大于等于 < 小于 <= 小于等于 == 等于 !=不等于 ===全等于 !==不全等于"
自赋值运算符:" += -= *= /= %= .="
逻辑运算符:" &&(与) ||(或) !(非)"
条件运算符:" 数据1 ? 数据2 : 数据3";
位运算符:" & | ~"
错误抑制符: " @ ";
提升运算优先级:" ( ) 括号",括号中的优先运算.
什么是赋值运算符?
就是将等号(=)右边的数据(可能是运算结果数据)赋值给左边的变量.
例如: $v1=1; $v2=2; $v3=$v1 +$v3;
错误的示范:
$v1+$v2=$v3;这是错误的 ,因为左边只能有一个变量.只能有一个变量名;
$v1=$v2+$v3;这个是对的,右边可以拥有多个变量运算,然后赋值给左边的变量;
什么是算数运算符?
就是针对数字进行的计算,包括: + - * / %;
%(百分号):对整数的数字进行"取余操作" 如果不是整数,会先自动转换为整数之后在进行取余.
转换整数的做法是,直接去掉小数部分,只取整数.
什么是连接运算符?
就是字符串的连接,能够将前后字符串连接起来.如果不是字符串,会自动转换为字符串.
举例:
$v1 = “ab” . “cd”; //结果为 abcd
$v2 = $v1 . “ef”; //结果为 abcdef
$v3 = “ab” . 12; //结果为“ab12”
$v4 = 12 . 34; //结果为”1234”
$v5 = “12” . true;//结果为“121”,true转为字符串,为“1”;
$v6 = “12” . false; //“12”,false转为字符串,为“”(即空字符串);
什么是自赋值运算符?
$变量 += 数据;
相当于这个赋值语句: $变量 = $变量 + 数据;
举例:
$v1 = 10; //将数字10赋值给v1
$v1 +=1; // v1自赋值数字1 ,结果为11;
$v2 = 20; //将数字20赋值给v2;
$v2 +=10; //v2自赋值10;输出结果为30;
其实就是相当于变量的值,在给它一个数据进行运算后,得到的结果在赋值给左边的变量,从而覆盖之前的变量.
什么是自操作(自加自减)运算符?
针对整数,只有"++"和"--";属于单目运算符,只要一个变量就可以进行运算.
表达形式:
$变量++; //后自加,对该变量中数据+1
$变量--; //后自减,对该变量中数据-1
++$变量;//前自加,对该变量中数据+1
--$变量; //前自减,对该变量中数据-1
举例:
$v1 = 1;
$v2 = $v1++; //这是后自加,就是先进行本句中的其他运算,然后进行自加运算;
echo "$v1 = $v1; $v2="$v2" //运算结果为:$v1=2;$v2=1;
$s1 =1;
$s2 =++$s1;//这是前自加,先进行本句中的自加运算,然后进行其他运算;
echo "s1=$s1, s2=$s2";//输出结果为s1=2,s2=2;
自加自减(自操作符)的总结:
1.前自加,后自加,对变量本身的结果都是加1,结果没有区别!
2.但是前自加-后自加如果和别的运算符一起进行,此时的区别为:
前自加:先发生自加,后做别的运算;
后自加:先做别的运算,然后自加;
什么是比较运算符?
就是针对数字大小进行比较的运算,有时候也可以针对字符串.
如果不是数字,会自动转换为数字.
包括:
> >= < <=
==(等于) != (不等于)
===(全等于) !==(不全等于)
所有比较运算符,运算的结果只有两个可能(之一): true 或 false
比如:
if(1 == 2); //结果为false;
等于(==)和全等于(===)的区别:
通常,等于(==)也会用“模糊相等”或“松散比较”的说法。
两个数据“基本相等”(类型可能会发生自动转换),就算是相等。
全等于(===)就是完全相等:
只有两个数据的数据类型一样,并且其值也一样的时候,才是全等。
不等于: !=
两个数据不满足“==”这个运算结果,不等于(!=)的结果就是true,比如:
if( 1 != 2 ); //结果为true;
不全等于:!==
两个数据不满足“===”这个运算结果,不全等于(!==)的结果就是true,比如:
if("1" !== 1 );//结果为true;
什么是逻辑运算符?
逻辑运算符有三种: 与(&&) 或(||) 非(!).
什么是逻辑与(&&)运算符?
就是只有两个条件(数据)的真假结果是否为真(true)的共同作用结果;
如果两个条件(数据)都为真(true)的时候输出的结果才为真(true),否则为假(false);
举例:
true && true 结果为 true
true && false 结果为 false
false && true 结果为 false
false &&false 结果为 false
原理:
往往是以“条件”的面目出现,而不是简单的真假值,比如:
$v1 = 18; //请判断该数是否能被3整除并且还能被5整除!
if( $v1 % 3 == 0 && $v1 % 5 == 0 ){
//结果为false
....做某事。。。
}else{
....做另一事。。。。
}
相当于一个灯泡有两个开关,必须两个开关都打开,等才会亮,差不多就是这个意思.
什么是逻辑或(||)?
就是两个条件(数据)的真假结果的是否存在“真”的情况.
只要有任意一个条件为真(true),结果就是真(true),然后做某件事情.
举例:
true || true 结果为 true
true || false 结果为true
false || true 结果为 true
false ||false 结果为 false
原理:
$v1 = 18; //请判断该数是否能被3整除或能被5整除!
if( $v1 % 3 == 0 || $v1 % 5 == 0 )
{ //结果为true,因为满足了能被3整除的条件.
...//然后程序就会执行某件事情
}
就是相当于一个灯有两个开关,只要其中一个开关打开了,灯就亮了...
什么是逻辑非(!)?
就是对一个布尔值进行"取反"的操作.
举例:
!true 结果为false
!false 结果为true
逻辑非(!)在if中的常见应用情形:
if( !isset( $v1 ) ){....} //如果$v1为空(null)
if( !empty( $v1 ) ){...} //如果$v1不为空(empty)
对应的两个相反的情形是:
if( isset( $v1 ) ){....} //如果$v1存在
if( empty( $v1 ) ){...} //如果$v1为空(empty)
区分两个“空”:
null: “真空”,什么都没有,是明确定义的“没有数据”的一种写法(含义)
empty:“现实意义上的没有”,就是无,就是0,等等,常见的,认为是empty的数据有:
“”(空字符串), 0, 0.0, “0”, false, null, 空数组
什么叫做逻辑运算的短路?
"短路"就是对于“逻辑与” 或 “逻辑或”这两种运算符,他们可能会只进行左侧的逻辑判断之后,
立即就中断后续(右侧)的判断,而得出整个逻辑运算符的运算结果!
if ( 左侧判断 && 右侧判断 ) //如果此时左侧判断为false,则整个if就是false,无需后续判断
if ( 左侧判断 || 右侧判断 ) //如果此时左侧判断为true, 则整个if就是true,无需后续判断
如何避免逻辑运算符的短路?
我们应该将我们可能发生短路运算的逻辑判断的前后判断语句,做如下调整:
相对简单的运算放前面(左侧),相对复杂的运算放后面(右侧)。
对于逻辑或的短路运算,道理一样。
什么叫做条件运算符?
条件运算符只有一种形式:
$v1 = 表达式1 ? 表达式2 :表达式3
就是表达式1为true(或自动转换后为true),则运算的结果值为表达式2,否则为表达式3。
举例:
$score = 57; //分数
$v1 = $score >= 60 ? “及格” : “不及格”;
echo $v1;
其本质是:
$score = 77; //分数
if ( $score >= 60 ){
$v1 = “及格”;
}
else{
$v1 = “不及格”;
}
echo $v1;
什么是位运算符?
针对整数进行的二进制级别的运算。
基本位运算符包括:按位与( & ), 按位或( | ), 按位非( ~ ), 按位异或(^)
运算的基本运算规则
位运算符有如下基本运算规则:
(只针对二进制的0和1这两个数据的基本位运算规则):
按位与(&)运算规则:
0 & 1 结果为:0
0 & 0 结果为:0
1 & 0 结果为:0
1 & 1 结果为:1
结论:只有两个都是1,按位与运算结果才是1
按位或(|)运算规则:
0 | 1 结果为:1
0 | 0 结果为:0
1 | 0 结果为:1
1 | 1 结果为:1
结论:只有两个都是0,按位或运算结果才是0
按位非(~):
~1结果为0
~0结果为1
按位异或(^):
0 ^ 1 结果为:1
0 ^ 0 结果为:0
1 ^ 0 结果为:1
1 ^ 1 结果为:0
规则是:相同为0,不同为1
什么是错误抑制符(@)?
在一个表达式出现错误的时候,可以将错误“隐藏”(掩盖)起来(不输出)!
通常,该符号,用于在实际运行环境中的一些条件非我们(程序员)所能控制的情形。
如果出现该情形并报错,则我们可以抑制该错误的显示(只是该错误不显示,不是没有错误了)
运算符的优先级!
运算符优先级不得不说的规则:
1,时刻意识到,运算符有优先级问题!
2,小括号可以改变运算的顺序(即括号最优先)
3,先乘除(以及取余)后加减;
4,大致有如此优先级规则:算术运算 > 比较运算 > 逻辑运算
5,赋值运算符通常都是最后(优先级最低)
结束语:
这篇文章主要介绍了PHP语言的基本运算,包括算术运算(加,减,乘,除,取余),赋值运算,自增自减运算,比较运算,逻辑运算和三目运算等,在执行PHP语言的基本运算时,需要注意运算符的优先级的问题,同时要区分好赋值运算符=以及等于==,虽然现在理解但在今后的代码中很容易忽视和混淆。注意平时的编程规范问题,要养成好的编程习惯和规范,以免今后出现一些不必要的错误。
网友评论