1.1.1. 03.运算符


1.运算符优先级

结合方向 运算符 附加信息
clone new clonenew
[ array()
\ 算术运算符
++ -- ~ (int) (float) (string) (array) (object) (bool) @ 类型递增/递减
instanceof 类型
! 逻辑运算符
** / %* 算术运算符
+ - . 算术运算符字符串运算符
<< >> 位运算符
< <= > >= 比较运算符
== != === !== <> <=> 比较运算符
& 位运算符引用
^ 位运算符
位运算符
&& 逻辑运算符
|| 逻辑运算符
?? 比较运算符
? : ternary
right = += -= =* *= /= .= %= &= |= ^= <<= >>=* 赋值运算符
and 逻辑运算符
xor 逻辑运算符
or 逻辑运算符
<?php
    $a = 3 * 3 % 5; // (3 * 3) % 5 = 4
    // ternary operator associativity differs from C/C++
    $a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2

    $a = 1;
    $b = 2;
    $a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5
?>

2. 算数运算符

  $a = 5;
  $b = 2;
  echo $a+$b; // 加法 结果:7 
  echo $a-$b; // 减法 结果:3
  echo $a*$b; // 乘法 结果:10
  echo $a/$b; // 除法取商 结果:2
  echo $a%$b; // 取模 结果:1
  echo $a**$b; // 指数乘积 结果:25

  // 取模例子 取模正负只看前一个值得正负
  echo (5 % 3); // 结果:2
  echo (-5 % 3); // 结果:-2
  echo (5 % -3); // 结果:2
  echo (-5 % -3); // 结果:-2

3.赋值运算符

  $b = 4;
  $a = $b +=5;  // $a = $b = ($b+5) a b 都等于 9

  $c = 'hello';
  $c .= 'world'; // hello world

  $d = 4;
  $e = &d;  // 引用赋值
  $e = 5;   // d e 都等于 5

4.位运算符

$a \&\ $b And(按位与) 将把 $a 和 $b 中都为 1 的位设为 1。
$a \|$b Or(按位或) 将把 $a 和 $b 中任何一个为 1 的位设为 1。
$a ^ $b Xor(按位异或) 将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
~ $a Not(按位取反) 将 $a 中为 0 的位设为 1,反之亦然。
$a << $b Shift left(左移) 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
$a >> $b Shift right(右移) 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。

5.比较运算符

当比较有字符串时,会把字符串转换为数字来进行比较

$a == $b 等于 TRUE,如果类型转换后 $a 等于 $b。
$a === $b 全等 TRUE,如果 $a 等于 $b,并且它们的类型也相同。
$a != $b 不等 TRUE,如果类型转换后 $a 不等于 $b。
$a <> $b 不等 TRUE,如果类型转换后 $a 不等于 $b。
$a !== $b 不全等 TRUE,如果 $a 不等于 $b,或者它们的类型不同。
$a < $b 小与 TRUE,如果 $a 严格小于 $b。
$a > $b 大于 TRUE,如果 $a 严格大于 $b。
$a <= $b 小于等于 TRUE,如果 $a 小于或者等于 $b。
$a >= $b 大于等于 TRUE,如果 $a 大于或者等于 $b。
$a <=> $b 太空船运算符(组合比较符) 当$a小于、等于、大于$b时 分别返回一个小于、等于、大于0的integer 值。 PHP7开始提供.
$a ?? $b ?? $c NULL 合并操作符 从左往右第一个存在且不为 NULL 的操作数。如果都没有定义且不为 NULL,则返回 NULL。PHP7开始提供。
  echo 1 <=> 1; // 0
  echo 2 <=> 1; // 1
  echo 1 <=> 2; // -1

  echo 'a' <=> 'b'; // -1
  echo 'a' <=> 'a'; // 0
  echo 'b' <=> 'a'; // 1

  echo "a" <=> "aa"; // -1
  echo "zz" <=> "aa"; // 1

  echo [] <=> []; // 0
  echo [1, 2, 3] <=> [1, 2, 3]; // 0
  echo [1, 2, 3] <=> []; // 1
  echo [1, 2, 3] <=> [1, 2, 1]; // 1
  echo [1, 2, 3] <=> [1, 2, 4]; // -1

多种类型比较

运算数 1 运算数 2 结果
null 或 string string null 转换为'',再比较
bool 或 null 任何其他类型 null 转换为 false,再比较
object object 除非内部结构相同,否则无法比较。
== 属性和值一样则相等。
=== 判断是否为同一对象
string,resource 或 number string,resource 或 number 都转换为数字比较
array array 较少成员的较小。如果运算数 1 中的键不存在于运算数 2 中则数组无法比较,否则挨个值比较
array 任何其它类型 array 总是更大
object 任何其它类型 object 总是更大

6.错误控制运算符

PHP 支持在表达式前加 @ 。表示忽略这个表达式的可能产生的任何错误

7.执行运算符

PHP 支持一个执行运算符:反引号(`)。PHP 将其作为 shell 命令进行执行,并返回结果。 反引号不能在双引号中执行。 反引号不能再激活了安全模式或者关闭了 shell_exec() 时执行。 ```php $a =ls -al`; echo $a; // 结果 -rw-r--r--@ 1 jupiter.k staff 241684 Mar 18 23:30 a.txt


#### 8.递增/递减运算符
```php
    $a = 5;
    $a++; // 先返回5,$a 再加 1
    ++$a; // $a 先加 1,再返回 6

9.逻辑运算符

$a and $b And(逻辑与) TRUE,如果 $a 和 $b 都为 TRUE
$a or $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE
$a xor $b Xor(逻辑异或) TRUE,如果 $a 或 $b 任一为 TRUE,但不同时是。
! $a Not(逻辑非) TRUE,如果 $a 不为 TRUE
$a && $b And(逻辑与) TRUE,如果 $a 和 $b 都为 TRUE
$a || $b Or(逻辑或) TRUE,如果 $a 或 $b 任一为 TRUE

10.字符串连接符

字符串连接符号 点(.)

$a = 1;
$b = 222
echo $a . $b; //1222

11.类型运算符

instanceof 用于确定一个 PHP 变量是否属于某一类

$c = new C();

$c instanceof C;
Copyright © Kagami丶 2019 all right reserved,powered by Gitbook该文件修订时间: 2019-10-17 19:28:55

results matching ""

    No results matching ""