运算符

PHP运算符可以根据操作数的个数分为一元运算符、二元运算符、三元运算符。一元运算符例如!(取反运算符)或++(加一运算符),PHP支持的大多数运算符都是这种二元运算符,例如+-*/等算数运算符,而三元运算符只有一个(?:)。另外按运算符的功能去分类,可以分为:算术运算符、字符串运算符、赋值运算符、比较运算符、逻辑运算符、位运算符和其他运算符。

算数运算符

运算符 含义 书写格式
+ 加法运算 $a+$b
- 减法运算 $a-$b
* 乘法运算 $a*$b
/ 除法运算 $a/$b
% 取除法余数运算 $a%$b
++ 自增1,例如$a++,其实是$a=$a+1 $a++
-- 自减1,例如$a--,其实是$a=$a-1 $a--

在算数运算符中,有个几乎所有程序都拥有的递增和递减规则,如下所示:

  • $a++先计算表达式的值,然后自身加1
  • $a--先计算表达式的值,然后自身减1
  • ++$a先自身加1,然后计算表达式的值
  • --$a先自身减1,然后计算表达式的值

Demo


<?php
$count=1;
echo $count++; //这一行打印出1
echo ++$count; //这一行打印出3
?>

字符串运算符

在PHP中字符串运算符只有一个,是英文的句号("."),也称为连接运算符。这个运算符不仅可以将两个字符串连接起来,变成合并的新字符串,也可以将一个字符串和任何标量数据类型相连接,合并成的都是新的字符串。

Demo


<?php
$name = "Kevin"; //定义一个人的名字为字符串类型
$age = 22; //定义一个人的年龄为整型
$height = 1.85; //定义一个人的身高为浮点型 //将以上不同类型的变量使用点操作符和字符串连接起来,一起输出
echo "我的名字是:".$name.",我的年龄是:".$age.",我的身高".$height."米。"."<br>";
?>

赋值运算符

  • =将一个值或表达式的结果赋值给变量
  • +=将变量与所赋的值相加后的结果再赋给该变量
  • -=将变最与所赋的值相减后的结果再赋给该变量
  • *=将变最与所赋的值相乘后的结果再赋给该变量
  • /=将变最与所赋的值相除后的结果再赋给该变量
  • %=将变最与所赋的值相除取余后的结果再赋给该变量
  • .=将变最与所赋的值相连后的结果再赋给该变量

Demo


<?php
$a = $b = $c = $d = 20; //$a、$b、$c、$d的值都为20 $a += 5; //等价于 $a = $a+5;
$b -= 5; //等价于 $b = $b-5;
$c *= 5; //等价于 $c = $c*5;
$d /= 5; //等价于 $d = $d/5;
$e %= 5; //等价于 $e = $e%5; $result="结果是:";
$result .= "\$a自加5以后的值为: ${a},";
$result .= "\$b自减5以后的值为: ${b},";
$result .= "\$c自乘5以后的值为: ${c},";
$result .= "\$d自除5以后的值为: ${d},";
$result .= "\$e自除5取余以后的值为: ${e}。"; echo $result; //输出全部相连后的字符串结果
?>

比较运算符

  • >大于,当左边操作数大于右边操作数时返回TRUE.否则返回FALSE
  • <小于,当左边操作数小于右边操作数时返回TRUE.否则返回FALSE
  • >=大于等于,当左边操作数大于等于右边操作数时返回TRUE.否则返回FALSE
  • <=小于等于,当左边操作数小于等于右边操作数时返回TRUE.否则返回FALSE
  • ==等于,当左边操作数等于右边操作数时返回TRUE.否则返回FALSE
  • ===全等于,当左边操作数等于右边操作数,并且他们的类型也相同时返回TRUE.否则返回FALSE
  • <>!=不等于,当左边操作数不等于右边操作数时返回TRUE.否则返回FALSE
  • !==不全等于,当左边操作数不等于右边操作数或者两者类型不相等的时候返回TRUE.否则返回FALSE

Demo


<?php
$a=1; //声明一个整型变量$a值为1
var_dump( $a > 1); //比较的结果为bool(false),1不大于1
var_dump( $a < true ); //比较的结果为bool(false),ture会自动转为1,1等于1
var_dump( $a >= 0.01 ); //比较的结果为bool(true),1大于0.01
var_dump( $a <= "0.10yuan" ); //比较的结果为bool(false),“0.10yuan”会自动转成0.10再比较
var_dump( $a == 1 ); //比较的结果为bool(true),1等于1
var_dump( $a == "1" ); //比较的结果为bool(true),“1”会自动转为1再比较,相等
var_dump( $a === "1" ); //比较的结果为bool(false),内容虽然相同,但不是同一类型的值
var_dump( $a === 1 ); //比较的结果为bool(true),内容相同,类型也相同
var_dump( $a <> 1 ); //比较的结果为bool(false),1等于1,所以为假
var_dump( $a != 1 ); //比较的结果为bool(false),同上
var_dump( $a != 0 ); //比较的结果为bool(true),1不等于0
var_dump( $a !== "1" ); //比较的结果为bool(true),虽然内容相同,但类型不同
?>

逻辑运算符

PHP提供了4种逻辑运算符:逻辑与(and&&)、逻辑或(or||)、逻辑非(not!)和异或(xor)。

  • 逻辑与:逻辑与表示“并且”的关系,两边的表达式必须都为TRUE,结果才能为真,否则整个表达式为假。
  • 逻辑或:逻辑或表示“或者”的关系,两边的表达式只要有一个为TRUE,结果就为真,否则整个表达式为假。
  • 逻辑非:逻辑非表示“取反”的关系,如果表达式为TRUE,结果就变为FALSE,如果表达式为FALSE,结果则为TRUE
  • 逻辑异或:逻辑异或在运算时两边的表达式不同时为TRUE才为TRUE,即必须是一边为TRUE,一边为FALSE。两边的表达式相同时,不管是都是TRUE还是都为FALSE,结果都为FALSE

Demo


$username = "apple"; //将用户名apple保存在变量$username中
$password = "123456"; //将用户密码123456保存在变量$password中
$email = "apple@163.com"; //将用户电子邮件apple@163.com保存在变量$email中
$phone = "400-7654321"; //将用户电话400-7654321保存在变量$phone中 //使用一个“逻辑与”运算符,和比较运算符一起使用共同作为条件判断
if( $username == "apple" && $password == "123456" ) {
echo "用户名和密码输入正确";
} //使用一个多个“逻辑或”运算符,和比较运算符一起使用共同作为条件判断
if( $username == "" || $password == "" || $email == "" || $phone == "" ) {
echo "所有的值一个都不能为空";
} //多个不同的逻辑运算符混合使用,和返回boolean值函数一起使用作为条件判断
if( (isset($email) && !empty($email)) || (isset($phone) && !empty($phone)) ) {
echo "最少有一种联系方式";
}

三元运算符

?:可以提供简单的逻辑判断,在PHP中三元运算符就此一根独苗。等价于条件语句if...else....其语法格式如下所示:(exprl)? (expr2):(expr3)。其含义是在exprl求值为TRUE时,执行?:之间的expr2并获取其值,在exprl求值为FALSE时,执行:之后的expr3并获取其值。

Demo


<?php
$money=100;
$result=$money>200?"好有钱":"没钱花了"; //输出没钱花了
echo $result;
?>

关于位运算符,在日常的程序中不常用,笔者不再做相关赘述,用兴趣的童鞋自行去百度一下吧。

PHP运算符的更多相关文章

  1. shell运算符

    原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用. expr 是一款表达式计算工具,使用它能完成表达式的求值操作. #!/bin/bash v ...

  2. SQL Server-聚焦APPLY运算符(二十七)

    前言 其实有些新的特性在SQL Server早就已经出现过,但是若非系统的去学习数据库你会发现在实际项目中别人的SQL其实是比较复杂的,其实利用新的SQL Server语法会更加方便和简洁,从本节开始 ...

  3. java中的移位运算符:<<,>>,>>>总结

    java中有三种移位运算符 <<      :     左移运算符,num << 1,相当于num乘以2 >>      :     右移运算符,num >& ...

  4. 我的MYSQL学习心得(五) 运算符

    我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...

  5. .NET 基础 一步步 一幕幕[运算符、占位符、转义符]

      运算符.占位符.转义符 好吧,在五局全胜之后,终于升到了三个钻,距离一个星星还有一大段距离,忽然想起来今天的博客还没写,果断坑队友,来写博客了....感觉以后还是每天更新一篇比较好.要不晚上就该熬 ...

  6. ECMASCript2015 提案 stage-3的对象展开运算符

    看源码时看到如下的代码 export default { //通过mapActions将actions映射到methods里 methods: { ...mapActions([ 'updateSta ...

  7. JavaScript权威设计--JavaScript表达式与运算符,语句(简要学习笔记六)

    1.delete是一元操作符,用来删除对象属性或者元素. var a={ x:1, y:2 } delete a.x; //删除x属性 “x”in a //false:a对象中已经不存在x属性 ale ...

  8. JavaScript权威设计--JavaScript表达式与运算符(简要学习笔记五)

    1.3种原始表达式     1.直接量:    1.23    //数字直接量                         “hello”    //字符串直接量                 ...

  9. LINQ to SQL语句(18)之运算符转换

    运算符转换 1.AsEnumerable:将类型转换为泛型 IEnumerable 使用 AsEnumerable<TSource> 可返回类型化为泛型 IEnumerable 的参数.在 ...

  10. El表达式的关系运算符

    El表达式的关系运算符: ==  对应  eq !=   对应  ne >    对应  gt <    对应  It

随机推荐

  1. Oozie 快速入门

    设想一下,当你的系统引入了spark或者hadoop以后,基于Spark和Hadoop已经做了一些任务,比如一连串的Map Reduce任务,但是他们之间彼此右前后依赖的顺序,因此你必须要等一个任务执 ...

  2. Java程序员的日常—— FileUtils工具类的使用

    package cn.xingoo.learn.commons; import org.apache.commons.io.FileUtils; import org.apache.commons.i ...

  3. 高德地图-搜索服务-POI搜索

    高德地图-搜索服务-POI搜索 之前公司项目收货地址仿饿了么的收货地址,结果发现自己实现的关键字搜索和周边搜索,搜索到的poi列表跟饿了么的并不完全一样,后来考虑了下,应该是搜索的范围.类型之类的设置 ...

  4. Sql Server系列:触发器

    触发器的一些常见用途: ◊ 强制参照完整性 ◊ 常见审计跟踪(Audit Trails):这意味着写出的记录不仅跟踪大多数当前的数据,还包括对每个记录进行实际修改的历史数据. ◊ 创建与CHECK约束 ...

  5. ClickOnce部署(3):使用证书

    在讲述证书的使用前,我们先来了解另外一个知识——发布网页. 在前面所说的ClickOnce部署中,如果大家细心的话,应该会发现这么个问题. 如上图,发布成功后,在"输出"窗口中提示 ...

  6. js+css实现骰子的随机转动

    网上找的例子,然后增添了新的东西,在这里展示一下...... 效果图预览: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitio ...

  7. .NET平台开源项目速览(10)FluentValidation验证组件深入使用(二)

    在上一篇文章:.NET平台开源项目速览(6)FluentValidation验证组件介绍与入门(一) 中,给大家初步介绍了一下FluentValidation验证组件的使用情况.文章从构建间的验证器开 ...

  8. AngularJS之Scope及Controller(一)

    前言 之前有接触过基本的AngularJS,未过多涉及,于是乎本系列我们来着重讲讲AngularJS,对AngularJS中重要的几大内容进行梳理并进行一些小的例子的书写.在之前项目过程中用到过ava ...

  9. swift 如何实现点击view后显示灰色背景

    有这样一种场景,当我们点击view的时候,需要过0.几秒显示一个灰色或者别的颜色的背景 用button来实现,只有按下去的时候才会出现,往往在快速按下,快速抬起的时候是看不出这个变化的 下边是解决方案 ...

  10. java 中多线程之间的通讯之等待唤醒机制

    wait notify () nitifyAll () 都使用在同步中,因为要对持有监视器(锁)的线程操作 所以要使用在同步中,因为只有同步才具有锁 为什么这些操作线程的方法要定义object类中呢 ...