PHP 运算符

运算符是一种告诉编译器执行特定的数学或逻辑操作的符号,PHP 语言内置了丰富的运算符

在 PHP 中,赋值运算符 = 用于给变量赋值

在 PHP 中,算术运算符 + 用于把值加在一起

PHP 算术运算符

运算符 名称 描述 范例 范例结果
x + y x 和 y 的和 2 + 2 4
x - y x 和 y 的差 5 - 2 3
x * y x 和 y 的积 5 * 2 10
x / y x 和 y 的商 15 / 5 3
x % y 取余 x 除以 y 的余数 5 % 2
10 % 8
10 % 2
1
2
0
- x 取反 x 取反 -2 -2
a . b 拼接 连接两个字符串 "Hi" . "Ha" HiHa

范例

<?php

$x = 13; 
$y = 7;
echo ($x + $y);
echo '<br>'; 

echo ($x - $y);
echo '<br>'; 

echo ($x * $y); 
echo '<br>';

echo ($x / $y);
echo '<br>';  

echo ($x % $y);
echo '<br>'; 

echo -$x;

echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';

运行范例 »

运行以上 PHP 脚本,输出结果如下

PHP 7+ 版本新增整除运算符 intdiv()

<?php

var_dump(intdiv(10, 3));

echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';

运行范例 »

运行以上 PHP 脚本,输出结果如下

PHP 赋值运算符

PHP 语言中,基本的赋值运算符是 "="

也就是说设置左操作数为右侧表达式的值

比如说 "$x = 5" 就是将 5 赋值给 $x 变量

PHP 支持以下赋值运算符

运算符 等同于 描述
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 连接两个字符串

范例

<?php
$x=10; 
echo $x;
echo "<br>";

$y=20; 
$y += 100;
echo $y;
echo "<br>";

$z=50;
$z -= 25;
echo $z;
echo "<br>";

$i=5;
$i *= 6;
echo $i;
echo "<br>";

$j=10;
$j /= 5;
echo $j;
echo "<br>";

$k=15;
$k %= 4;
echo $k;

echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';

运行范例 »

运行以上 PHP 脚本,输出结果如下

范例 2

下面的范例演示了使用不同字符串运算符得到的相同的结果

<?php

$a = "Hello";
$b = $a . " world!";
echo $b; // 输出Hello world! 

$x="Hello";
$x .= " world!";
echo $x; // 输出Hello world! 

echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';

运行范例 »

运行以上 PHP 脚本,输出结果如下

PHP 递增/递减运算符

运算符 名称 描述
++x 预递增 x 加 1,然后返回 x
x++ 后递增 返回 x,然后 x 加 1
--x 预递减 x 减 1,然后返回 x
x-- 后递减 返回 x,然后 x 减 1

范例

<?php

$x=10; 
echo ++$x;
echo "<br>";

$y=10; 
echo $y++;
echo "<br>";

$z=5;
echo --$z;
echo "<br>";

$i=5;
echo $i--;

echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';

运行范例 »

运行以上 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

范例

<?php

$x=100; 
$y="100";

var_dump($x == $y); // 因为值相等,返回 true
echo "<br>";
var_dump($x === $y); // 因为类型不相等,返回 false
echo "<br>";
var_dump($x != $y); // 因为值相等,返回 false
echo "<br>";
var_dump($x !== $y); // 因为值不相等,返回 true
echo "<br>";

$a=50;
$b=90;

var_dump($a > $b);
echo "<br>";
var_dump($a <  $b);

echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';

运行范例 »

运行以上 PHP 脚本,输出结果如下

PHP 逻辑运算符

我们假设 x = 6 y = 3

运算符 名称 描述 范例
x and y x 和 y 都为 true,返回 true (x < 10 and y > 1) 返回 true
x or y x 和 y 至少有一个为 true,返回 true (x==6 or y==5) 返回 true
x xor y 异或 x 和 y 有且仅有一个为 true,返回 true (x==6 xor y==3) 返回 false
x && y x 和 y 都为 true,返回 true (x < 10 && y > 1) 返回 true
x || y x 和 y 至少有一个为 true,返回 true (x==5 || y==5) 返回 false
! x x 不为 true,返回 true !(x==y) 返回 true

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);
echo "<br>";
var_dump($x == $y);
echo "<br>";
var_dump($x === $y);
echo "<br>";
var_dump($x != $y);
echo "<br>";
var_dump($x <> $y);
echo "<br>";
var_dump($x !== $y);

echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';

运行范例 »

运行以上 PHP 脚本,输出结果如下

三元运算符

PHP 支持三元运算符 ( ?: )

三元运算符也是一种条件运算符

语法

三元运算符 ( ?: ) 语法格式如下

<?php 
(expr1) ? (expr2) : (expr3)
  • 在 expr1 求值为 TRUE 时的值为 expr2
  • 在 expr1 求值为 FALSE 时的值为 expr3

PHP 5.3

从 PHP 5.3 起,可以省略三元运算符中间那部分

<?php 
(expr1) ?: (expr3)
  • 在 expr1 求值为 TRUE 时返回 expr1
  • 否则返回 expr3

范例

下面的范例通过判断 $_GET 请求中含有 user 值,如果有返回 $_GET['user'],否则返回 nobody

<?php
$test = '简单编程';
// 普通写法
$username = isset($test) ? $test : 'nobody';
echo $username, '<br/>';

// PHP 5.3+ 版本写法
$username = $test ?: 'nobody';
echo $username, '<br/>';
echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';

运行范例 »

运行以上 PHP 脚本,输出结果如下

PHP 7 合并运算符 ??

PHP 7+ 版本多了一个 NULL 合并运算符 ??

语法

PHP 7+ NULL 合并运算符 ?? 语法格式如下

<?php 
(expr1) ?? (expr2)
  • 如果表达式 expr1 为真则返回 expr1 表达式的值
  • 否则返回 expr2 表达式的值

范例

<?php 
// 如果 $_GET['user'] 不存在返回 'nobody',否则返回 $_GET['user'] 的值
$username = $_GET['user'] ?? 'nobody';

echo $username,"<br/>";

// 类似的三元运算符
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
echo $username,"<br/>";

echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';

运行范例 »

运行以上 PHP 脚本,输出结果如下

PHP7 组合比较符( <=> )

<=> 太空船操作符,又称组合比较运算符,结合比较运算符

组合比较运算符,英文叫作 combined comparison operator,符号为 <=>,它有一个形象的名字,叫作太空船操作符

组合比较运算符可以轻松实现两个变量的比较,当然不仅限于数值类数据的比较

语法

组合比较运算符语法格式如下

<?php 
$c = $a <=> $b;
  • 如果$a > $b, $c 的值为 1
  • 如果$a == $b, $c 的值为 0
  • 如果$a < $b, $c 的值为 -1

在没有太空船运算符的时候,我们只能这样写代码

<?php 
$c = $a > $b ? 1 : ( $a==$b ? 0 : -1 );

范例

<?php
// 整型
echo 1 <=> 1 ,'<br/>'; // 0
echo 1 <=> 2 ,'<br/>'; // -1
echo 2 <=> 1 ,'<br/>'; // 1

// 浮点型
echo 1.5 <=> 1.5 ,'<br/>'; // 0
echo 1.5 <=> 2.5 ,'<br/>'; // -1
echo 2.5 <=> 1.5 ,'<br/>'; // 1

// 字符串
echo "a" <=> "a" ,'<br/>'; // 0
echo "a" <=> "b" ,'<br/>'; // -1
echo "b" <=> "a" ,'<br/>'; // 1

echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';

运行范例 »

运行以上 PHP 脚本,输出结果如下

运算符优先级

下表按照优先级从高到低列出了运算符

同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序

结合方向 运算符 附加信息
clone new clone 和 new
[ array()
++ — ~ (int) (float) (string) (array) (object) (bool) @ 类型和递增/递减
instanceof 类型
! 逻辑运算符
*   /   % 算术运算符
+   –   . 算术运算符和字符串运算符
<<   >> 位运算符
==   !=   ===   !==   <> 比较运算符
& 位运算符和引用
^ 位运算符
| 位运算符
&& 逻辑运算符
|| 逻辑运算符
? : 三元运算符
=   +=   -=   *=   /=   .=   %=   &=   |=   ^=   <<=   >>=   => 赋值运算符
and 逻辑运算符
xor 逻辑运算符
or 逻辑运算符
, 多处用到

注意: 运算符优先级中,or 和 ||,&& 和 and 都是逻辑运算符,效果一样,但是其优先级却不一样

范例

<?php

// 优先级: &&  >  =  >  and
// 优先级: ||  >  =  >  or

$a = 3;
$b = false;
$c = $a or $b;
var_dump($c);          // 这里的 $c 为 int 值3,而不是 boolean 值 true
echo '<br/>';
$d = $a || $b;
var_dump($d);          //这里的 $d 就是 boolean 值 true 

echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';

运行范例 »

运行以上 PHP 脚本,输出结果如下

括号的使用

通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定

多使用括号可以增加代码的可读性

<?php

// 括号优先运算

$a = 1;
$b = 2;
$c = 3;
$d = $a + $b * $c;
echo $d;
echo "<br/>";
$e = ($a + $b) * $c;  // 使用括号
echo $e;
echo "<br/>";

echo '<p>PHP 基础教程 - 简单教程(www.twle.cn)</p>';

运行范例 »

运行以上 PHP 脚本,输出结果如下

关于   |   FAQ   |   我们的愿景   |   广告投放   |  博客

  简单教程,简单编程 - IT 入门首选站

Copyright © 2013-2018 简单教程 twle.cn All Rights Reserved.