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 的实例

posted @ 2017-02-13 22:53  ZHPQAQ  阅读(215)  评论(0编辑  收藏  举报