博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php 运算符
阅读量:5027 次
发布时间:2019-06-12

本文共 2213 字,大约阅读时间需要 7 分钟。

算术运算符

有以下几个:+   -   *    /    %    ++    --

  • 注意:注意取余运算%,先取整,再取余

$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或自减1。
  • 字符串: 只能自增,且自增的效果就是“下一个字符”

 

 

  • 布尔值递增递减无效
  • null递减无效,递增结果为1

前加加和后加加的区别:

  • 前++:先完成变量的递增运算,再取得该变量的值参与别的运算。
  • 后++:先将原来变量的值临时存储,再将变量值递增,最后再将临时存储的值参与别的运算。
  • 推论1:如果独立语句中进行自加运算,前自加后自加没有区别 。
  • 推论2:如果前自加后自加是放在别的语句中,则会有所区别。
  • 推论3: 前加加比后加加效率略高(在循环中建议使用前加加)。

比较运算符:

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

 

==和===的区别:

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

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

 

 

常见不同类型的比较(主要指标量类型的数据)——非正常比较

  • 正常比较——数字的大小比较
  • 如果有布尔值,均转为布尔值比较:规则:true > false
  • 否则,如果有数字,均转为数字比较:
  • 否则,如果两边都是纯数字字符串,转为数字比较
  • 否则,就按字符串比较

 

 

 

字符串的比较规则为:按字符的先后顺序依次一个一个比较,发现哪个大,则就表示整体大,后续不再比较

 

逻辑运算符:&&   ||   !

前提:都是针对布尔类型的值进行的运算,如果不是布尔,就会转换为布尔。

 

逻辑与:

规则(真值表):

true && true          ==> true;

true && false                    ==>false

false && true                    ==>false;

false && false           ==>false;

只有两个都是true,结果才是true

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

逻辑或:

规则(真值表):

true || true  ==> true;

true || false             ==>true

false || true             ==>true;

false || false             ==>false;

只有两个都是false,结果才是false

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

逻辑非:

!true ==> false

!false ===>true

短路现象之逻辑与短路:

在实际应用中,参与逻辑运算的数据,往往都不是直接的布尔值,而是有关计算之后的布尔结果值。

大致如下:

if(  IsFemale( $uName )  &&  isAge($uName) > 18){

......echo “女士优先”

}

此时,如果IsFemale()函数判断的结果是false,那么后续的函数isAge()就不再调用,自然也不再进行大于18的判断,这是就称为“短路现象”

短路现象之逻辑或短路:

if(  IsFemale( $uName )  ||  isAge($uName) < 18){

......echo “有限照顾女士或未成年人”

}

此时,如果IsFemale()函数判断的结果是true,那么后续的函数isAge()就不再调用,自然也不再进行小于18的判断,这就是“或运算符短路现象”

 

字符串运算符:

只有一个:  .   

衍生一个:  .=

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

对比js:+(具有双重含义,此时就需要一定的“判断”)

赋值运算符:

只有一个:     =

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

基本形式为:

$变量  符合赋值运算符   数据2;

这些衍生的赋值运算符,是这种运算的一个简化形式:

$v2  =  $v2  [运算符]  数据2;//某个变量跟另一个数据进行某种运算之后的结果再存入该变量

对比(它不是这种形式的简化):

$v2  =  数据2  [运算符]  $v2;      //这种形式不应该简化

 

条件(三目)运算符:

一般的运算符需要2个数据参与

有几个运算符只需要一个数据参与: ++,   --   !

则:

条件运算符就需要至少3个数据参与!

形式为:

数据1  ?  数据2 :数据3;

通常,数据1最终应该是一个布尔值(如果不是,则会当作布尔值来使用)。

含义:

如果数据1为true,则运算结果为数据2, 否则运算结果为数据3

典型举例:

$score = 66;

$result 1=  $score >= 60  ?  “及格”  : “不及格”;       //结果是“及格”

 

$result 2=  $score  ?  “及格”  : “不及格”;         //结果是“及格”,但含义完全不同,因为即使分数是33,也是及格。只有分数为0才是不及格。

 

三目运算符可以转换为if else语句来实现:

if( $score >= 60){

$result1 = “及格";

}

else{

$result1 = “不及格";

}

转载于:https://www.cnblogs.com/mmzz3322/p/10983148.html

你可能感兴趣的文章
Vue双向绑定原理详解
查看>>
Android基础总结(5)——数据存储,持久化技术
查看>>
关于DataSet事务处理以及SqlDataAdapter四种用法
查看>>
bootstrap
查看>>
http://lorempixel.com/ 可以快速产生假图
查看>>
工程经验总结之吹水"管理大境界"
查看>>
为什么JS动态生成的input标签在后台有时候没法获取到
查看>>
20189210 移动开发平台第六周作业
查看>>
java之hibernate之基于外键的双向一对一关联映射
查看>>
rxjs一句话描述一个操作符(1)
查看>>
第一次独立上手多线程高并发的项目的心路历程
查看>>
ServiceStack 介绍
查看>>
Centos7下载和安装教程
查看>>
无谓的通宵加班之后的思索
查看>>
S1的小成果:MyKTV系统
查看>>
从setting文件导包
查看>>
编写一个函数isMerge,判断一个字符串str是否可以由其他两个字符串part1和part2“组合”而成...
查看>>
union和union all
查看>>
Github 开源:使用控制器操作 WinForm/WPF 控件( Sheng.Winform.Controls.Controller)
查看>>
PMD使用提醒
查看>>