PHP运算符
php中的运算符分为一下几类运算符:
1、算术运算符
例子 | 名称 | 结果 |
_$a | 取反 | $a的负值 |
$a+$b | 加法 | $a+$b的和 |
$a-$b | 减法 | $a和$b的值 |
$a*4b | 乘法 | $a除以$b的积 |
$a/$b | 除法 | $a除以$b的商 |
$a%$b | 取模 | $a除以$b的余数 |
$a**$b | Exponentiaton |
除法运算符总是返回浮点数。只有在下列情况列外:两个操作数都是整数(或字符串转换成的整数)并且正好能整除,这时它返回一个整数。
取模运算符的操作数在运算之前都会转换成整数(除去小数部分)。
取模运算符%的结果和被除数的符号(正负号)相同。即$a%$b的结果和$a的符号相同。例如:
<?php echo (5%3). " \n"; echo (5%-3). "\n"; echo (-5%3). "\n"; <?
2、赋值运算符
基本的赋值运算符是“=”。一开始可能会以为它是“等于”,其实不是的。它实际上意味着把右边表达式的赋值给左边的运算数。
引用赋值:php引用赋值,使用"$var=&$othervar",语法。引用赋值意味着两个变量指向同一个数据,没有拷贝任何东西。
3、位运算符
例子 | 名称 | 结果 |
$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次 |
$a>>$b | Shift left(右移) | 将$a中的位向右移动$b次 |
位移在php中是数学运算。向任何方向移除去的位都被丢弃。左移时右侧以零填充,符号位被移走意味着正负号不被保留。
4、比较运算符,如同它们名称所暗示的,允许对两个字进行比较。
$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 | 结合比较运算符 | TRUE,当$a小于、等于、大于than $b时 分别返回一个小于、等于、大于0的integer值。php7提供。 |
$a??$b??$c | NULL 合并操作符 | 从左往右第一个存在且不为NULL 的操作数。如果都没有定义且不为NULL,则返回NULL.PHP7提供。 |
如果比较一个数字和字符串或者比较涉及到数字内容的字符串,则字符串会被转换为数值并且比较按照数值来进行。此规则也适用于 switch 语句。当用 === 或 !== 进行比较时则不进行类型转换,因为此时类型和数值都要比对。
5、错误控制运算符
PHP 支持一个错误控制运算符:@。当将其放置在一个 PHP 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。注意: @ 运算符只对表达式有效。对新手来说一个简单的规则就是:如果能从某处得到值,就能在它前面加上 @ 运算符。例如,可以把它放在变量,函数和 include调用,常量,等等之前。不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等。
6、PHP 支持一个执行运算符:反引号(``)。注意这不是单引号!PHP 将尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回(即,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符"`"的效果与函数 shell_exec() 相同。
7、递增 / 递减运算符。
PHP 支持 C 风格的前/后递增与递减运算符。
例子 | 名称 | 效果 |
++$a | 前加 | $a 的值加一,然后返回 $a。 |
$a++ | 后加 | 返回 $a,然后将 $a 的值加一。 |
--$a | 前减 | $a 的值减一, 然后返回 $a。 |
$a-- | 后减 | 返回 $a,然后将 $a 的值减一。 |
注意:在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。例如,在 Perl 中 $a = 'Z'; $a++; 将把 $a 变成'AA',而在 C 中,a = 'Z'; a++; 将把 a 变成 '['('Z' 的 ASCII 值是 90,'[' 的 ASCII 值是 91)。注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。递增/递减其他字符变量则无效,原字符串没有变化。
8、
例子 | 名称 | 结果 |
$a and $b | Or(逻辑或) | 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 。 |
"与"和"或"有两种不同形式运算符的原因是它们运算的优先级不同
9、字符串运算符
有两个字符串(string)运算符。第一个是连接运算符("."),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(".="),它将右边参数附加到左边的参数之后。
10、数组运算符
例子 | 名称 | 结果 |
$a + $b | 联合 | $a 和 $b 的联合。 |
$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 。 |
注意:+ 运算符把右边的数组元素附加到左边的数组后面,两个数组中都有的键名,则只用左边数组中的,右边的被忽略。
11、类型运算符
instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例