PHP 运算符
在 PHP 中,赋值运算符 = 用于给变量赋值。
在 PHP 中,算术运算符 + 用于把值加在一起。
PHP 算术运算符
符号 说明 举例
+ 加号 $x + $y
- 减号 $x - $y
* 乘号,乘以 $x * $y
/ 除号,除以 $x / $y
% 取余也叫取模、求模 $x % $y
以下实例演示了使用不同算术运算符得到的不同结果:
实例
<?php $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 ?>
尝试一下 »
PHP7+ 版本新增整除运算符 intdiv(),在这里了解一下。使用实例:
<?php var_dump(intdiv(10, 3)); ?>
以上实例会输出:
int(3)
PHP 赋值运算符
在 PHP 中,基本的赋值运算符是 "="。它意味着左操作数被设置为右侧表达式的值。也就是说,"$x = 5" 的值是 5。
符号 举例 等价式
= $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
.= $x .= $y $x = $x . $y
以下实例演示了使用不同赋值运算符得到的不同结果:
实例
<?php $x = 10; echo $x; // 输出10 $y = 20; $y += 100; echo $y; // 输出120 $z = 50; $z -= 25; echo $z; // 输出25 $i = 5; $i *= 6; echo $i; // 输出30 $j = 10; $j /= 5; echo $j; // 输出2 $k = 15; $k %= 4; echo $k; // 输出3 ?>
尝试一下 »
以下实例演示了使用不同字符串运算符得到的不同结果:
实例
<?php $a = "Hello"; $b = $a . " world!"; echo $b; //输出Hello world! $x = "Hello"; $x .= " world!"; echo $x; // 输出Hello world! ?>
尝试一下 »
PHP 递增/递减运算符
运算符 名称 描述
++ x 预递增 x 加 1,然后返回 x
x ++ 后递增 返回 x,然后 x 加 1
-- x 预递减 x 减 1,然后返回 x
x -- 后递减 返回 x,然后 x 减 1
以下实例演示了使用递增/递减运算符得到的结果:
实例
<?php $x = 10; echo ++$x; // 输出11 $y = 10; echo $y++; // 输出10 $z = 5; echo --$z; // 输出4 $i = 5; echo $i--; // 输出5 ?>
尝试一下 »
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
以下实例演示了使用一些比较运算符得到的不同结果:
实例
<?php $x = 100; $y = "100"; var_dump($x == $y); echo "<br>"; var_dump($x === $y); echo "<br>"; var_dump($x != $y); echo "<br>"; var_dump($x !== $y); echo "<br>"; $a = 50; $b = 90; var_dump($a > $b); echo "<br>"; var_dump($a < $b); ?>
尝试一下 »
PHP 逻辑运算符
运算符 名称 描述 实例
x and y 逻辑与 如果 x 和 y 都为 true,则返回 true x=6 y=3 (x < 10 and y > 1) 返回 true
x or y 逻辑或 如果 x 和 y 至少有一个为 true,则返回 true x=6 y=3 (x==6 or y==5) 返回 true
x xor y 逻辑异或 如果 x 和 y 有且仅有一个为 true,则返回 true x=6 y=3 (x==6 xor y==3) 返回 false
x && y 逻辑与 如果 x 和 y 都为 true,则返回 true x=6 y=3 (x < 10 && y > 1) 返回 true
x || y 逻辑或 如果 x 和 y 至少有一个为 true,则返回 true x=6 y=3 (x==5 || y==5) 返回 false
! x 逻辑非 如果 x 不为 true,则返回 true x=6 y=3 !(x==y) 返回 true
下面举几个例子:
逻辑与
<?php $x = true; $y = false; //逻辑与(并且),要求两个都为true才执行真区间,所以代码中执行假区间 if($x && $y){ echo '执行了真区间'; }else{ echo '执行了假区间'; } ?>
逻辑或
<?php $x = true; $y = false; //逻辑或,有一个为真则为真 if($x || $y){ echo '执行了真区间'; }else{ echo '执行了假区间'; } ?>
逻辑非
<?php $y = false; //逻辑非,把false变为了true if(!$y){ echo '执行了真区间'; }else{ echo '执行了假区间'; } ?>
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
以下实例演示了使用一些数组运算符得到的不同结果:
实例
<?php $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); ?>
尝试一下 »
三元运算符
另一个条件运算符是"?:"(或三元)运算符 。
语法格式
(expr1) ? (expr2) : (expr3)
对 expr1 求值为 TRUE 时的值为 expr2,在 expr1 求值为 FALSE 时的值为 expr3。
可以写为:$x? 真代码段(只能写一句代码): 假代码段(只能写一句代码);
自 PHP 5.3 起,可以省略三元运算符中间那部分。表达式 expr1 ?: expr3 在 expr1 求值为 TRUE 时返回 expr1,否则返回 expr3。
实例
以下实例中通过判断 $_GET 请求中含有 user 值,如果有返回 $_GET['user'],否则返回 nobody:
$_GET 变量 将会在 PHP 表单中讲解 参考 PHP $_GET 变量
<?php $test = 'php中文网'; //普通写法 $username = isset($test) ? $test : 'nobody'; echo $username, PHP_EOL; //输出 php中文网 // PHP 5.3+ 版本写法 $username = $test ?: 'nobody'; echo $username, PHP_EOL; //输出 php中文网 ?>
注意:PHP_EOL 是一个换行符,兼容更大平台。
在 PHP7+ 版本多了一个 NULL 合并运算符,实例如下:
<?php // 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值 $username = $_GET['user'] ?? 'nobody'; // 类似的三元运算符 $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; ?>
组合比较符(PHP7+)
PHP7+ 支持组合比较符,实例如下:
<?php // 整型 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 ?>
运算符的优先级
运算符的优先级是一个非常复杂的规则,可以参见 http://php.net/manual/zh/language.operators.precedence.php 无需死记硬背,
我们只需要了解常用的规则即可,从高到底:
++、--(递增递减)
!逻辑非
乘除运算高于加减运算(先乘除后加减)
比较运算符(先计算再比较)
逻辑运算符(比较的结果做逻辑运算)