PHP运算符

320 阅读1分钟

一、按作用划分

1、数学运算符: +(正号)、-(负号)、*(乘号)、/(除号)、%(取余)、+(加)、-(减);

2、字符运算符:.

3、赋值运算符: =、+=、-=、*=、/=、%=、.=

4、比较运算符: >、>=、==、<>、!=、<、<=、===(全等)、!==(不全等)

5、自增/自减运算符: $i++、$i--、++$i、--$i;

后缀形式:先使用,后加减;前缀形式:先加减,后使用; 说明:自增/自减不影响布尔型;

<?php
//自增/自减运算符(increment)
//后缀形式
$i = 5;
echo $i++, '<hr>'; //输出5,因为先使用,后加减;
echo $i, '<hr>'; //输出6(因为使用完成后再加减)
$n = $i++; //将$i++的值赋予变量$n,而$i++是后缀自增
//于是就先将$i的值直接赋予$n,此时$n是6,然后$i再自增,结果为7
echo $n, '<hr>'; //输出6
echo $i, '<hr>'; //输出7
$m = 5;
$m++; //$m++,后缀自增,先使用,后加减
echo $m, '<hr>'; //6
echo $m, '<hr>'; //6

$i = 6;

$m = $i++ + 3;
echo $m, '<hr>'; //9
echo $i, '<hr>'; //7

//前缀形式:先加减,后使用;

$i = 3;
$n = ++$i;
echo $n, '<hr>';
echo $i, '<hr>';

6、逻辑运算符

!(逻辑非)

&&(逻辑与),两者同时为真,结果为真;否则为假;

||(逻辑或),两者同时为假,结果为假;否则为真;

短路求值:在进行&&(逻辑与)||(逻辑或)运算时,只要第一个表达式的结果可以确定整个表达式结果时,第二个表达式将忽略执行;

表达式是 PHP 最重要的基石。在 PHP中,几乎所写的任何东西都是一个表达式。简单但却最精确的定义一个表达式的方式就是“任何有值的东西”。

造成短路求值的情况有:

  1. 逻辑与运算时,第一个表达式的结果为false;
  2. 逻辑或运算时,第一个表达式的结果为true;
<?php
//短路求值案例
$i = 1;
$n = 1;
if ($i > 0 || ++$n) {
    $i++;
    $n++;
}
echo $i, '<hr>'; //2
echo $n, '<hr>'; //2

7、执行运算符 `` (反引号)

PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。

<?php
//执行运算符
//在windows环境下,dir命令可以显示当前/指定目录下的文件/子目录
echo `dir`;

8、错误抑制符 @

PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。

<?php
//要打开当前目录下的readme.txt文件
$handle = @fopen('readme.txt', 'r');

//不加@ 会报错如下信息:Warning: fopen(readme.txt): failed to open stream: No such file or directory
//加@ 就不会报错

注意:该运算符只能对表达式有效;

二、按参加操作的操作数数量

单目运算符:只有一个操作数的运算符,如+(正号)、-(负号)、!、@

双目运算符:有两个操作数的运算符,如*、/、>、>=、&&、||等

三目运算符:有三个操作数的运算符;

expression ? value1 : value2(如果expression为真,返回value1,否则返回value2)

expression ?: value2(如果expression为真,则返回自身,否则返回value2)

原型是 expression ? expression : value2;

<?php
//三目运算符
$n = 1;
$m = $n > 2 ? 5 : 7;
echo $m, '<hr>';//7

//expression ?: value2
//(如果expression为真,则返回自身,否则返回value2)
$i = 5;
$m = $i > 0 ?: 7;
var_dump($m); //bool(true)

三、运算符的优先级

更多详细内容请访问:运算符