前言
本文主要展示了可用于 PHP 脚本中的各种运算符。运算符是可以通过给出的一或多个值(用编程行话来说,表达式)来产生另一个值(因而整个结构成为一个表达式)的东西。
提示:以下是本篇文章正文内容,下面案例可供参考
一、算术运算符
- 标识:+$a,将$a转换为int或者float。
- 取反:-$a,$a的负值。
- 加:$a + $b,$a和$b的求和。
- 减:$a - $b,$a和$b的求差。
- 乘:$a * $b,$a和$b的求积。
- 除:$a / $b,$a除以$b的商。当$a和$b都是整数,且能整除时,返回的结果是整数。其他情况,返回的结果都是浮点数。
- 取模:$a % $b,$a除以$b的余数。取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。结果和被除数的符号(正负号)相同。即 $a % $b 的结果和 $a 的符号相同。
- 求幂:$a ** $b,$a的$b次方的值。
二、赋值运算符
赋值运算符用于向变量写值。基本的赋值运算符是“=”。意味着把右边表达式的值赋给左边的运算数。分为传值赋值和引用赋值。
传值赋值:
- =:$a = 5,右侧表达式为左侧运算数设置值。
- +=:$a += 5,即$a = $a + 5
- -=:$a -= 5,即$a = $a - 5
- *=:$a *= 5,即$a = $a * 5
- /=:$a /= 5,即$a = $a / 5
- %=:$a %= 5,即$a = $a % 5
引用赋值:意味着两个变量指向了同一个数据,没有拷贝任何东西。
$a = 3;
$b = &$a;
echo $a."<br>"; //输出3
echo $b."<br>"; //输出3
$a = 4;
echo $a."<br>"; //输出4
echo $b."<br>"; //输出4
三、字符串运算符
- 串接:.(点)
- 串接赋值:.=(点等于)
$str = "hello";
$str = $str." world";
echo $str; //输出hello world
$st = "hello";
$st .= "world";
echo $st; //输出hello world
四、递增/减运算符
- 前加:++$a,$a 的值加一,然后返回 $a。
- 后加:$a++,返回 $a,然后将 $a 的值加一。
- 前减:–$a,$a 的值减一, 然后返回 $a。
- 后减:$a–,返回 $a,然后将 $a 的值减一。
$A = 2;
$a = ++$A; //$A+1,然后返回$A
echo $A; //输出3
echo $a; //输出3
$B = 2;
$b = $B++; //返回$B,然后$B+1
echo $B; //输出3
echo $b; //输出2
//加加在前,先加再返回
//加加在后,先返回再加
递增递减还可以用在字符串上:$a = ‘Z’; $a++; 将把 $a 变成’AA’。字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。递增/递减其他字符变量则无效,原字符串没有变化。
$str = "W";
$str_new = $str++;
echo $str; //输出W
echo $str_new; //输出X
$st = 'z';
$st_new = $st++;
echo $st."<br>"; //输出aa
echo $st_new."<br>"; //输出z
$s = 'Z';
$s_new = $s++;
echo $s."<br>"; //输出AA
echo $s_new."<br>"; //输出Z
递增或递减布尔值没有效果。
五、比较运算符
用于比较两个值(数字或字符串)
- 等于:$x == $y;如果类型转换后 $x 等于 $y,返回true。
- 全等:$x === $y;如果 $x 等于 $y,并且它们的类型也相同,返回true。
- 不等:$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。
- 大于等于:$x >= $y;如果 $x 大于或者等于 $y,返回true。
- 太空船运算符(组合比较符):当$x小于、等于、大于 $y时 分别返回一个小于、等于、大于0的 integer 值
// Integers
echo 1 <=> 1; // 0
echo 1 <=> 2; // -1
echo 2 <=> 1; // 1
// Floats
echo 1.5 <=> 1.5; // 0
echo 1.5 <=> 2.5; // -1
echo 2.5 <=> 1.5; // 1
// Strings
echo "a" <=> "a"; // 0
echo "a" <=> "b"; // -1
echo "b" <=> "a"; // 1
echo "a" <=> "aa"; // -1
echo "zz" <=> "aa"; // 1
// Arrays
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
// Objects
$a = (object) ["a" => "b"];
$b = (object) ["a" => "b"];
echo $a <=> $b; // 0
$a = (object) ["a" => "b"];
$b = (object) ["a" => "c"];
echo $a <=> $b; // -1
$a = (object) ["a" => "c"];
$b = (object) ["a" => "b"];
echo $a <=> $b; // 1
// only values are compared
$a = (object) ["a" => "b"];
$b = (object) ["b" => "b"];
echo $a <=> $b; // 1
- 由于浮点数 float 的内部表达方式,不应比较两个浮点数float是否相等。
- 三元运算符:$str == 1 ? true : false;
- 合并运算符:$a = $b ?? ‘default’;
//以上的合并运算符等同于
if(isset($b)){
$a = $b;
}else{
$a = 'default';
}
六、逻辑运算符
- 逻辑与:$a && $b 或 $a and $b,$a且$b都为true时,返回true。
- 逻辑或:$a || $b或 $a or $b,$a或$b有一个为true时,返回true。
- 逻辑非:!$a,如果 $a 不为true时,返回true。
- 逻辑异或:$a xor $b,如果 $a 或 $b 任一为true,但不同时是时,返回true。
七、位运算符
- 按位与:$a & $b,将把 $a 和 $b 中都为 1 的位设为 1。
- 按位或:$a | $b,将把 $a 和 $b 中任何一个为 1 的位设为 1。
- 按位异或:$a ^ $b,将把 $a 和 $b 中一个为 1 另一个为 0 的位设为 1。
- 按位取反:~$a,将 $a 中为 0 的位设为 1
- 左移:$a << $b,将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
- 右移:$a >> $b,将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。
位移在 PHP 中是数学运算。向任何方向移出去的位都被丢弃。左移时右侧以零填充,符号位被移走意味着正负号不被保留。右移时左侧以符号位填充,意味着正负号被保留。
八、错误控制运算符
错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。@ 运算符只对表达式有效。可以把它放在变量,函数和 include 调用,常量,等等之前。不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等。
九、执行运算符
反引号(``)。PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“`”的效果与函数 shell_exec() 相同。
关闭了 shell_exec() 时反引号运算符是无效的,不能在双引号字符串中使用。
十、数组运算符
- 联合:$a + $b,$a 和 $b 的联合。把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,右边的被忽略。
- 等于:$a == $b,如果 $a 和 $b 具有相同的键/值对则为 TRUE。
- 全等:$a === $b,如果 $a 和 $b 具有相同的键/值对并且顺序和类型都相同则为 TRUE。
- 不等:$a != $b或 $a <> $b,如果 $a 不等于 $b 则为 TRUE。
- 不全等:$a !== $b,如果 $a 不全等于 $b 则为 TRUE。
十一、类型运算符
instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例。
class test1{}
class test2{}
$str = new test2;
var_dump($str instanceof test1); //输出bool(false)
var_dump($str instanceof test2); //输出bool(true)
class test3{}
class test4 extends test3{}
$st = new test4;
var_dump($st instanceof test3); //输出bool(true)
var_dump($st instanceof test4); //输出bool(true)
总结
以上就是今天要讲的内容,本文仅仅简单介绍了PHP常见运算符的介绍。
- 算术运算符:标识、取反、加、减、乘、除、取模、求幂。
- 赋值运算符:1、传值运算符(=,+=,-=,*=,/=,%=)。2、引用运算符(&符,意味着两个变量指向了同一个数据,没有拷贝任何东西。)。
- 字符串运算符:.(点,字符串拼接),.=(点等于,串接赋值)。
- 递增递减运算符:++$a,$a++(加加在前,先加再返回)。
- 比较运算符:==(等于),===(全等于),!=(<>不等于),!==(不全等于),<(小于),>(大于),<=(小于等于),>=(大于等于),<=>(太空船运算符)。
- 逻辑运算符:&&(and 与),||(or 或),!(非),xor(异或)。
- 位运算符:按位&(与),|(或),^(异或),~(取反),<<(左移,左移时右侧以零填充,符号位被移走意味着正负号不被保留),>>(右移,右移时左侧以符号位填充,意味着正负号被保留)。
- 错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
- 执行运算符:反引号,shell命令来执行,效果相当于shell_exec()。
- 数组运算符:联合(右侧的数组加到左侧的数组后面,相同键名保留左侧),等于(相同的键值对),全等于(相同的键值对、顺序、类型),不等,不全等。
- 类型运算符:instanceof 判断一个变量是否属于某一类的实例。