PHP 运算符


PHP 运算符


正文

运算符 有 优先级 、 结合性 的性质,需要研究总结一下。

<?php
$a = 1;
echo $a++;  // 1
echo $a;    // 2
echo ++$a;  // 3
echo $a;    // 3
<?php
if (1 || 0 && 1) {

}

1 && 0 || 1 是说 (1 && 0) || 11 AND 0 && 1 是说 1 && (0 || 1)

$a = $b && $c; 是说 $a = ($b && $c);$a = $b AND $c; 是说 ($a = $b) AND $c;

运算符分类

这里只简单写一下,详细内容参阅手册

  • 算术运算符

+ 加法/标识 、 - 减法/取反 、 * 乘法 、 / 除法 、 % 取模 、 ** 求幂

  • 赋值运算符

= 赋值运算符 、 = & 引用赋值 、 += 算术赋值运算符 、

位赋值运算符: &= 按位与 、 |= 按位或 、 ^= 按位异或 、 <<= 左移 、 >>= 右移 、

其他赋值运算符: .= 字符串拼接 、 ??= NULL 合并

  • 位运算符

& And(按位与) 、 | Or(按位或) 、 ^ Xor(按位异或) 、 ~ Not(按位取反) 、 << Shift left(左移) 、 >> Shift right(右移)

  • 比较运算符

=====!=<>!==<><=>=<=> 太空船运算符(组合比较符)

  • 错误控制运算符

@

  • 执行运算符
`

反引号

  • 递增/递减运算符

++--

  • 逻辑运算符

andorxor!&&||

  • 字符串运算符

. 连接运算符 、 .= 连接赋值运算符

  • 数组运算符

+ 联合 、 == 相等 、 === 全等 、 != 不等 、 <> 不等 、 !== 不全等

  • 类型运算符

instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例。 instanceof 在功能上有个 类似的变体 is_a()

运算符优先级

运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。 必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。

如果运算符优先级相同,那运算符的结合方向决定了该如何运算。例如,”-“是左联的,那么 1 - 2 - 3 就等同于 (1 - 2) - 3 并且结果是 -4. 另外一方面,”=”是右联的,所以 $a = $b = $c 等同于 $a = ($b = $c)。

没有结合的相同优先级的运算符不能连在一起使用,例如 1 < 2 > 1 在PHP是不合法的。 但另外一方面表达式 1 <= 1 == 1 是合法的, 因为 == 的优先级低于 <=。

下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

注意 优先级结合性 两个属性。






参考资料

PHP 手册 语言参考 运算符 https://www.php.net/manual/zh/language.operators.php


返回