专栏首页学院君的专栏PHP 基本语法篇:运算符

PHP 基本语法篇:运算符

介绍完了 PHP 中的基本数据类型和数组,今天我们结合数据类型介绍 PHP 语言中的运算符和流程控制,非常简单,我们简单过一下即可。

我们在 php_learning/basic 目录下新增 operator.php 文件存放运算符相关演示代码。

1、算术运算符

首先来看算术运算符,算术运算符用于数值类型的数学计算,通常包含加、减、乘、除、求余五种运算,此外,PHP 不支持符号类型,负数也是通过取反运算实现的,PHP 5.6 还引入了 ** 快速实现指数运算:

不过我们还是以常见的四则运算为例进行演示:

加减乘除很好理解,求余就是获取两数相除之后的余数,如果可以整除,则余数为 0,比如上面这段示例代码,打印 $n5 的结果就是 0,我们通过 printf 函数格式化输出结果字符串,整型对应的标识符是 %d,另外,如果要输出 % 字符,需要通过 %% 转义,上述代码执行结果如下:

另外,如果我们想要在原来的变量基础上进行加减乘除操作,可以用如下方式简写:

$a += $b;  // 等价于 $a = $a + $b;
printf("%d\n", $a);
$a -= $b;  // 等价于 $a = $a - $b;
printf("%d\n", $a);
$a *= $b;  // 等价于 $a = $a * $b;
printf("%d\n", $a);
$a /= $b;  // 等价于 $a = $a / $b;
printf("%d\n", $a);
$a %= $b;  // 等价于 $a = $a % $b;
printf("%d\n", $a);

上述代码输出结果如下:

现在直接在变量 $a 的基础上操作,会破坏原有变量的值,但是由于加减/乘除互为逆操作,所以上述1、3、5的运算结果和第一种运算结果一致。

2、自增/自减运算符

如果是对变量进行自增、自减操作(通常是整型变量),可以通过自增/自减运算符实现:

$a = 32;  // 将 $a 恢复为 32
$a++;  // 等价于 $a += 1;
$b--;  // 等价于 $b -= 1;
printf("a, b = %d, %d\n", $a, $b);

上述代码的运算结果是:

你也可以将 ++/-- 自增运算符放到变量之前,它们最终运算结果是一致的,但是有细微区别:

上述代码运算结果如下:

看到了吧,上述对比运算之后,$a$b 的最终运算结果是一致的,不同之处在于自增/自减运算符位于变量之前时,运算之后直接返回变更后的值,而自增/自减运算符位于变量之后时,当前操作返回值还是原始值,直到下次被调用,才会引用更新后的变量值。

关于算术运算符就简单介绍到这里,下面我们来看比较运算符。

3、比较运算符

所以比较运算符指的是对变量值大小进行比较,通常也是数值间的比较。PHP 中的比较运算符包含以下这些:

其实就是等于、不等于、小于、小于等于、大于、大于等于这些比较,和数学中的比较运算是一个意思,PHP 中比较运算符的运算结果都是布尔值,要么是 true,要么是 false,非常简单(后面的注释部分是打印结果):

# 比较运算符
$a = 32;
$b = 8;
var_dump($a == $b);  // false
var_dump($a != $b);  // true
var_dump($a > $b);   // true

需要注意的是 ===== 以及 !=!=== 之间的区别,前者只比较变量值,后者除了比较变量值,还会比较变量类型(后面的注释部分是打印结果):

# 严格比较
$c = 32;
$d = 32.0;
var_dump($c == $d);  // true
var_dump($c != $d);  // false
var_dump($c === $d); // false
var_dump($c !== $d); // true
var_dump($a == $c);  // true
var_dump($a === $c); // true

$a$c 都是整型,且值相同,所以不管是 == 还是 === 运算结果都相等,而 $d 是浮点型,虽然和 $c 数值相等,但类型不一样,所以 == 运算结果是 true,而 === 运算结果是 false

4、逻辑运算符

最后要介绍的是逻辑运算符,所谓逻辑运算就是与(AND)、或(OR)、非(NOT)、异或(XOR)运算,这些也是和高中数学课本中介绍的逻辑运算是一个概念:

其中 and 等价于 &&or 等价于 ||,其中 $a$b 可以表示某个布尔类型的运算结果,也可以直接是布尔表达式,具体的运算逻辑上面列表中已经讲的比较详细了。

逻辑运算符通常会和比较运算符结合起来使用:

if ($a > $b && $a >= $c) {
    // do something...
}

if ($a > $b || $a >= $c) {
    // do something...
}

if (!($a < $b)) {
    // do something...
}

另外,如果 $a$b 是某个具体类型值的话,会按照如下规则将其转化为对应的布尔值进行逻辑运算(参考 PHP 布尔类型官方文档):

5、其他运算符

以上是 PHP 中常见的几种运算符介绍,除此之外,PHP 还支持其他运算符,非常简单,参考官方文档查看即可:

  • 赋值运算符
  • 位运算符
  • 错误控制运算符
  • 执行运算符
  • 字符串运算符
  • 数组运算符
  • 类型运算符

这里就不一一介绍了,后续会在具体使用的时候逐个介绍。

6、运算符优先级

如果一个 PHP 表达式中包含了多个运算符,比如进行算术运算的时候,就会包含算术运算符/自增(减)运算符和赋值运算符,又比如,在上述逻辑运算符中提到逻辑运算符通常和比较运算符相伴相生,有的时候,还会引入括号,当涉及到多个运算符时,就存在运算符优先级问题,关于运算符的优先级,可以参考 PHP 官方文档:https://www.php.net/manual/zh/language.operators.precedence.php。

好了,关于 PHP 运算符我们就简单介绍到这里,下篇教程,我们来介绍 PHP 中常见的控制结构。

本文分享自微信公众号 - 学院君的后花园(geekacademy),作者:学院君

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Go 语言基础入门教程 —— 数据类型篇:整型和运算符

    在 PHP 中,默认只有 int 这一种带符号的整数类型,其长度与平台相关,在 32 位平台下其最大值为 20 亿左右(等同于 Go 语言中的 int32),6...

    学院君
  • 玩转 PhpStorm 系列(八):Vim 篇

    在快捷键篇中,学院君给大家介绍过,如果你之前使用过其他代码编辑器(比如 VSCode、Eclipse、Sublime Text 等),并且已经习惯那一套快捷键,...

    学院君
  • Go 语言并发编程系列(六)—— 通道类型篇:单向通道及其使用

    我们介绍了管道类型的基本语法,通常,管道都是支持双向操作的:既可以往管道发送数据,也可以从管道接收数据。但在某些场景下,可能我们需要限制只能往管道发送数据,或者...

    学院君
  • Java之运算符(下)

    条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要是决定哪个值应该赋值给变量。

    用户5224393
  • Python入门系列第二章--第四节:运算符(一)

    顾名思义,算术运算符就是用来进行算数运算的一些符号。那么算术运算符包含哪些呢?除了有我们常用的 加、减、乘、除 外,还有 取模、幂、取整除 ,这些运算符的解释详...

    喵叔
  • 第二章--第三节:运算符(一)

    顾名思义,算术运算符就是用来进行算数运算的一些符号。那么算术运算符包含哪些呢?除了有我们常用的 加、减、乘、除 外,还有 取模、幂、取整除 ,这些运算符的解释详...

    喵叔
  • c++之运算符

    算数运算符:+(正) -(负) + - * / % i++(先赋值后自增) ++i(先自增后赋值) i--(先赋值后自减) --i(先自减后赋值)

    绝命生
  • Go语言学习01

    安包
  • C#运算符的优先级

    在C#中,一共有38个常用的运用符,根据它们所执行运算的特点和它们的优先级,为了便于记忆,我将它们归为七个等级:1、单元运算符和括号。2、常规算术运算符。3、位...

    郑小超.
  • 【笔记】《C++Primer》—— 第14章:重载运算和类型转换

    这一章介绍了对运算符的重载和类型转换,其中最重要的是对各种运算符的运用,14.8对function类的运用和14.9对类型转换时可能产生的二义性的理解,...

    ZifengHuang

扫码关注云+社区

领取腾讯云代金券