摘要訊息 : PHP 中的運算子教學.

0. 前言

本文于 2022 年 3 月 18 日进行一次更新和修正. 修正之后本文已经归档, 不再享受更新.

1. 算数运算符

  • + : 加法;
  • - : 减法;
  • * : 乘法;
  • / : 除法;
  • % : 求余/

2. 赋值运算符

  • = : 将右边表达式的值赋值给左边;
  • += : 将右边表达式的值加上左边的值赋值给左边;
  • -= : 将右边表达式的值减去左边的值赋值给左边;
  • *= : 将右边表达式的值乘上左边的值赋值给左边;
  • /= : 将右边表达式的值除以左边的值赋值给左边;
  • %= : 将右边表达式的值与左边的值求余后赋值给左边.

3. 字符串运算符

由于 PHP 是弱语言, 所以对于字符串, PHP 给字符串创造了一个较绝大多数语言不同的字符串运算符. "." 相当于 C++ 语言中 std::string 类型的 "+", 即连接字符串 :

<?php
    $a = "Hello";
    $b = "PHP";
    echo $a.", ".$b."!";    // 结果 : Hello, PHP!
?>

".=" 相当于 C++ 语言中 std::string 类型的 "+=", 即将右边字符串表达式的值加上左边的字符串再赋值给左边 :

<?php
    $a = "Hello";
    $a .= $a;
    echo $a;    // 结果 : HelloHello
?>

4. 递增与递减运算符

  • ++ : 将变量加 1;
  • -- : 将变量减 1.

++-- 分成了前递增, 前递减, 后递增和后递减 :

<?php
    $i = 0;
    echo $i++;    // 结果 : 0
    echo $i;    // 结果 : 1
    $i = 0;
    echo ++$i;    // 结果 : 1
?>

5. 比较运算符

PHP 由于本身的特性, 所以会有比较多的比较运算符 :

  • == : 值相等则返回 True, 否则回传 False;
  • === : 值相等并且类型相等则返回 True, 否则回传 False;
  • != : 值不等则返回 True, 否则回传 False;
  • !== : 值相等但是类型不相等则返回 True, 否则回传 False;
  • <> : 同 !=, 值不等则返回 True, 否则回传 False;
  • > : 值较右边大则返回 True, 否则回传 False;
  • < : 值较右边小则返回 True, 否则回传 False;
  • >= : 值较右边大或者等于右边则返回 True, 否则回传 False;
  • <= : 值较右边小或者等于右边则返回 True, 否则回传 False.

6. 逻辑运算符

  • and : 与. 当条件全部为 True 才返回 True, 否则回传 False;
  • && : 同 and;
  • or : 或. 只要条件有一个为 True 则返回 True, 否则回传 False;
  • || : 同 or;
  • xor : 异或, 有且仅有一个条件为 True 则返回 True, 否则回传 False;
  • ! : 非. 若条件为 False 则返回 True, , 否则回传 False.

7. 数组运算符

PHP 不像 Swift, 分为数组, 字典和元组, 在 PHP 中统一使用数组进行表示. 在目前的 PHP 版本中, 数组运算符执行之后, 已经无法正常输出, 所以这里不再做介绍, 有兴趣的可以自行 Google.

8. 位运算符

  • & : 按位和;
  • | : 按位或;
  • ^ : 按位异或;
  • ~ : 按位取反;
  • << : 左移;
  • >> : 右移.

9. 错误控制运算符

在 PHP 中, 当在运算之前加入 @ 则表示 : 若该语句有错误提示, 屏蔽这个提示 :

<?php
    $error = 10 / 0;    // 有错误提示, 除数为 0
    $err = @(10 / 0);    // 无错误提示
?>

10. 三元运算符

在 PHP 中, 三元运算符只有一个, 即 "?:", 和 C 语言中的三元运算符类似 : (condition) ? (statement1) : (statement2). 当条件 condition 成立, 则执行语句 statement1, 否则执行语句 statement2.

11. 运算符优先级与结合规则

在 PHP 中的运算符的优先级和结合规则其实与正常的数学运算符极其类似. 值得注意的是, 赋值运算符是由右边向左边依次赋值 :

<?php
    $a = 0;
    $b = 9;
    $c = $b = $a;
    echo $c;    // 结果 : 0
?>

12. 表达式

类似于 $a = 5 被称为表达式, 类似于 $a = 5; 被称为语句.