PHP 运算符
PHP 运算符主要包括以下类型:算术运算符、赋值运算符、递增/递减运算符、比较运算符、逻辑运算符、数组运算符、三元运算符以及组合比较符(太空船运算符)。这些运算符构成了PHP语言的基础运算体系,能够满足各种编程场景的需求。
PHP 算术运算符
✅ 本表系统整理了 PHP 中最基础的算术运算符,通过清晰的示例展示各运算符的具体功能与运算结果:
运算符 | 名称 | 详细说明 | 代码示例 | 预期结果 |
---|---|---|---|---|
x + y | 加法运算 | 计算两个操作数的算术和 | echo 2 + 2; |
4 |
x - y | 减法运算 | 计算两个操作数的算术差 | echo 5 - 2; |
3 |
x * y | 乘法运算 | 计算两个操作数的乘积 | echo 5 * 2; |
10 |
x / y | 除法运算 | 计算两个操作数的商(返回浮点结果) | echo 15 / 5; |
3 |
x % y | 取模运算 | 返回除法运算后的余数(特别适用于判断奇偶性、循环计数等场景) |
echo 5 % 2; echo 10 % 8;
|
1 2 |
-x | 取负运算 | 对操作数进行符号取反操作 | $x = 2; echo -$x; |
-2 |
~x | 按位取反 | 对操作数的二进制表示按位取反(常用于位运算和加密算法) | $x = 2; echo ~$x; |
-3 |
a . b | 字符串连接 | 将两个字符串拼接为一个新字符串(PHP特有的字符串连接运算符) | echo "Hi" . "Ha"; |
HiHa |
✅ 以下实例通过不同算术运算符的演示,展示了相应的运算结果:
$x = 10;
$y = 6;
echo ($x + $y); // 输出 16
echo ($x - $y); // 输出 4
echo ($x * $y); // 输出 60
echo ($x / $y); // 输出 1.6666666666667
echo ($x % $y); // 输出 4
echo -$x; // 输出 -10
echo ~$x; // 输出 -11
echo $x.$y; // 输出 106
✅ PHP7+ 版本新增整除运算符intdiv()
,使用实例:
var_dump(intdiv(10, 3));
✅ 以上实例会输出:
int(3)
PHP 赋值运算符
在 PHP 中,赋值运算符=
是最基础的运算符之一,其核心功能是将右侧表达式的值赋予左侧的操作数。
运算符 | 等同于 | 描述 |
---|---|---|
x = y | x = y | 左操作数被设置为右侧表达式的值 |
x += y | x = x + y | 加 |
x -= y | x = x - y | 减 |
x *= y | x = x * y | 乘 |
x /= y | x = x / y | 除 |
x %= y | x = x % y | 模(除法的余数) |
a .= b | a = a . b | 连接两个字符串 |
✅ 以下实例演示了使用不同赋值运算符得到的不同结果:
$a = 10;
echo $a; // 输出 10
$b = 20;
$b += 100;
echo $b; // 输出 120
$c = 50;
$c -= 25;
echo $c; // 输出 25
$d = 5;
$d *= 6;
echo $d; // 输出 30
$e = 10;
$e /= 5;
echo $e; // 输出 2
$f = 15;
$f %= 4;
echo $f; // 输出 3
✅ 以下实例演示了使用不同字符串运算符得到的相同结果:
$a = "Hello";
$b = $a . " world!";
echo $b; // 输出 Hello world!
$x = "Hello";
$x .= " world!";
echo $x; // 输出 Hello world!
PHP 递增/递减运算符
PHP 提供了递增和递减运算符,用于对变量的值进行加1或减1操作。这些运算符在循环、计数等场景中非常有用。
运算符 | 名称 | 描述 |
---|---|---|
++ x | 预递增 | x 加 1,然后返回 x |
x ++ | 后递增 | 返回 x,然后 x 加 1 |
-- x | 预递减 | x 减 1,然后返回 x |
x -- | 后递减 | 返回 x,然后 x 减 1 |
✅ 以下实例演示了使用递增/递减运算符得到的结果:
$a = 10;
echo ++$a; // 输出 11
$b = 10;
echo $b++; // 输出 10
$c = 5;
echo --$c; // 输出 4
$d = 5;
echo $d--; // 输出 5
PHP 比较运算符
PHP 提供了多种比较运算符,用于比较两个值的大小或相等性。
✅ 以下是 PHP 中的主要比较运算符:
运算符 | 名称 | 描述 | 实例 |
---|---|---|---|
x == y | 等于 | 如果 x 等于 y,则返回 true | 5==8 返回 false |
x === y | 绝对等于 | 如果 x 等于 y,且它们类型相同,则返回 true | 5==="5" 返回 false |
x != y | 不等于 | 如果 x 不等于 y,则返回 true | 5!=8 返回 true |
x <> y | 不等于 | 如果 x 不等于 y,则返回 true | 5<>8 返回 true |
x !== y | 不绝对等于 | 如果 x 不等于 y,或它们类型不相同,则返回 true | 5!=="5" 返回 true |
x > y | 大于 | 如果 x 大于 y,则返回 true | 5>8 返回 false |
x < y | 小于 | 如果 x 小于 y,则返回 true | 5<8 返回 true |
x >= y | 大于等于 | 如果 x 大于或者等于 y,则返回 true | 5>=8 返回 false |
x <= y | 小于等于 | 如果 x 小于或者等于 y,则返回 true | 5<=8 返回 true |
✅ 以下实例演示了使用一些比较运算符得到的不同结果:
$a = 10;
$y = "100";
var_dump($x == $y); // 返回 false
var_dump($x === $y); // 返回 false
var_dump($x != $y); // 返回 true
var_dump($x !== $y); // 返回 true
$a = 50;
$b = 90;
var_dump($a > $b); // 返回 false
var_dump($a < $b); // 返回 true
PHP 数组运算符
PHP 提供了一些专门用于数组操作的运算符,用于比较或合并数组。
✅ 以下是 PHP 中的主要数组运算符:
运算符 | 名称 | 描述 |
---|---|---|
x + y | 集合 | x 和 y 的集合 |
x == y | 相等 | 如果 x 和 y 具有相同的键/值对,则返回 true |
x === y | 恒等 | 如果 x 和 y 具有相同的键/值对,且顺序相同类型相同,则返回 true |
x != y | 不相等 | 如果 x 不等于 y,则返回 true |
x <> y | 不相等 | 如果 x 不等于 y,则返回 true |
x !== y | 不恒等 | 如果 x 不等于 y,则返回 true |
✅ 以下实例演示了使用一些数组运算符得到的不同结果:
$x = array("a" => "red", "b" => "green");
$y = array("c" => "blue", "d" => "yellow");
$z = $x + $y; // $x 和 $y 数组合并
var_dump($z);
var_dump($x == $y);
var_dump($x === $y);
var_dump($x != $y);
var_dump($x <> $y);
var_dump($x !== $y);
PHP 三元运算符
三元运算符是 PHP 中一种简洁的条件表达式,它允许在一行代码中根据条件返回不同的值。
✅ 基本语法:
(条件) ? 表达式1 : 表达式2;
- 如果条件为 true,返回表达式1的值
- 如果条件为 false,返回表达式2的值
// 普通写法
$name = isset($_GET['name']) ? $_GET['name'] : '匿名用户';
// PHP 5.3+ 版本写法
$name = $_GET['name'] ?: '匿名用户';
// PHP 7+ 版本写法
$name = $_GET['name'] ?? '匿名用户';
组合比较符(PHP7+)
PHP7+ 引入了组合比较运算符,也称为太空船操作符,其符号为<=>
。这个运算符能够以简洁直观的方式实现两个变量的三态比较,它会根据左操作数是否小于、等于或大于右操作数,分别返回 -1
、0
或 1
。
该运算符不仅适用于数值类型的比较,还可以智能处理字符串、数组等多种数据类型的比较场景,极大地简化了需要明确判断大小关系的代码逻辑。
✅ 其语法结构如下:
$c = $a <=> $b;
✅ 解析如下:
- 如果 $a > $b, 则 $c 的值为 1。
- 如果 $a == $b, 则 $c 的值为 0。
- 如果 $a < $b, 则 $c 的值为 -1。
✅ 实例如下:
// 整型
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// 浮点型
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// 字符串
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
运算符优先级
下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
说明:左 = 从左到右,右 = 从右到左。
结合方向 | 运算符 | 附加信息 |
---|---|---|
无 | clone new | clone 和 new |
左 | [ | array() |
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 |
无 | instanceof | 类型 |
右 | ! | 逻辑运算符 |
左 | * / % | 算术运算符 |
左 | + – . | 算术运算符和字符串运算符 |
左 | << >> | 位运算符 |
无 | == != === !== <> | 比较运算符 |
左 | & | 位运算符和引用 |
左 | ^ | 位运算符 |
左 | | | 位运算符 |
左 | && | 逻辑运算符 |
左 | || | 逻辑运算符 |
左 | ? : | 三元运算符 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 |
左 | and | 逻辑运算符 |
左 | xor | 逻辑运算符 |
左 | or | 逻辑运算符 |
左 | , | 多处用到 |
运算符优先级中,or 和 ||,&& 和 and 都是逻辑运算符,效果一样,但是其优先级却不一样。
// 优先级: && > = > and
// 优先级: || > = > or
$a = 3;
$b = false;
$c = $a or $b;
var_dump($c); // 这里的 $c 为 int 值3,而不是 boolean 值 true
$d = $a || $b;
var_dump($d); //这里的 $d 就是 boolean 值 true
✅ 以上实例输出结果为:
int(3)
bool(true)
括号的使用
我们通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,通常能够增加代码的可读性。
// 括号优先运算
$a = 1;
$b = 2;
$c = 3;
$d = $a + $b * $c;
echo $d;
$e = ($a + $b) * $c; // 使用括号
echo $e;
✅ 以上实例输出结果为:
7
9
反馈提交成功
感谢您的反馈,我们将尽快处理您的反馈