PHP 运算符
2015-06-25 20:48
661 查看
【运算符优先级】
[thead]
取模运算符 % 的结果和被除数的符号(正负号)相同。即 $a % $b 的结果和 $a 的符号相同。
【位运算符】
[thead]
【比较运算符】
[thead]
[thead]
注意三元运算符是个语句,因此其求值不是变量,而是语句的结果。如果想通过引用返回一个变量这点就很重要。在一个通过引用返回的函数中语句 return $var == 42 ? $a : $b; 将不起作用,以后的 PHP 版本会为此发出一条警告。
【递增递减】
[thead]
递增/递减运算符不影响布尔值。递减 NULL 值也没有效果,但是递增 NULL 的结果是 1。 在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。例如,在 Perl 中 $a = 'Z'; $a++; 将把 $a 变成'AA',而在 C 中,a = 'Z';
a++; 将把 a 变成 '['('Z' 的 ASCII 值是 90,'[' 的 ASCII 值是 91)。注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。递增/递减其他字符变量则无效,原字符串没有变化。
【逻辑运算符】
[thead]
【字符串运算符】
有两个字符串(string)运算符。第一个是连接运算符("."),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(".="),它将右边参数附加到左边的参数之后。
【类型运算符】
instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例,或者使用 instanceof 检查对象不是某个类的实例。然而 instanceof 的使用还有一些陷阱必须了解。在 PHP 5.1.0 之前,如果要检查的类名称不存在,instanceof
会调用 __autoload()。另外,如果该类没有被装载则会产生一个致命错误。可以通过使用动态类引用或用一个包含类名的字符串变量来避开这种问题。
结合方向 | 运算符 | 附加信息 |
---|---|---|
无 | clone new | clone 和 new |
左 | [ | array() |
右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 |
无 | instanceof | 类型 |
右 | ! | 逻辑运算符 |
左 | * / % | 算术运算符 |
左 | + - . | 算术运算符和字符串运算符 |
左 | << >> | 位运算符 |
无 | == != === !== <> | 比较运算符 |
左 | & | 位运算符和引用 |
左 | ^ | 位运算符 |
左 | | | 位运算符 |
左 | && | 逻辑运算符 |
左 | || | 逻辑运算符 |
左 | ? : | 三元运算符 |
右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 |
左 | and | 逻辑运算符 |
左 | xor | 逻辑运算符 |
左 | or | 逻辑运算符 |
左 | , | 多处用到 |
【位运算符】
例子 | 名称 | 结果 |
---|---|---|
$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 次(每一次移动都表示"乘以 2")。 |
$a >> $b | Shift right(右移) | 将 $a 中的位向右移动 $b 次(每一次移动都表示"除以 2")。 |
例子 | 名称 | 结果 |
---|---|---|
$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。 |
运算数 1 类型 | 运算数 2 类型 | 结果 |
---|---|---|
null 或string | string | 将 NULL转换为 "",进行数字或词汇比较 |
bool 或null | 任何其它类型 | 转换为 bool,FALSE< TRUE |
object | object | 内置类可以定义自己的比较,不同类不能比较,相同类和数组同样方式比较属性(PHP 4 中),PHP 5 有其自己的说明 |
string,resource 或number | string,resource 或number | 将字符串和资源转换成数字,按普通数学比较 |
array | array | 具有较少成员的数组较小,如果运算数 1 中的键不存在于运算数 2 中则数组无法比较,否则挨个值比较(见下例) |
object | 任何其它类型 | object 总是更大 |
array | 任何其它类型 | array 总是更大 |
【递增递减】
例子 | 名称 | 效果 |
---|---|---|
++$a | 前加 | $a 的值加一,然后返回 $a。 |
$a++ | 后加 | 返回 $a,然后将 $a 的值加一。 |
--$a | 前减 | $a 的值减一, 然后返回 $a。 |
$a-- | 后减 | 返回 $a,然后将 $a 的值减一。 |
a++; 将把 a 变成 '['('Z' 的 ASCII 值是 90,'[' 的 ASCII 值是 91)。注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。递增/递减其他字符变量则无效,原字符串没有变化。
【逻辑运算符】
例子 | 名称 | 结果 |
---|---|---|
$a and $b | And(逻辑与) | 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。 |
有两个字符串(string)运算符。第一个是连接运算符("."),它返回其左右参数连接后的字符串。第二个是连接赋值运算符(".="),它将右边参数附加到左边的参数之后。
【类型运算符】
instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例,或者使用 instanceof 检查对象不是某个类的实例。然而 instanceof 的使用还有一些陷阱必须了解。在 PHP 5.1.0 之前,如果要检查的类名称不存在,instanceof
会调用 __autoload()。另外,如果该类没有被装载则会产生一个致命错误。可以通过使用动态类引用或用一个包含类名的字符串变量来避开这种问题。
<?php // % echo (5 % 3)."<br>"; // prints 2 echo (5 % -3)."<br>"; // prints 2 echo (-5 % 3)."<br>"; // prints -2 echo (-5 % -3)."<br>"; // prints -2 // 自增 $z = 'W'; for($ix=0; $ix<6; $ix++) { echo ++$z."<br>"; } // 字符串 $a = "Hello "; $b = $a . "World!"."<br>"; // instanceof class MyClass { } class MyClass2 extends MyClass { } $cVal = new MyClass2(); $d = 'NotMyClass'; var_dump($cVal instanceof MyClass2); var_dump($cVal instanceof MyClass); //var_dump($cVal instanceof stdClass); var_dump($cVal instanceof $d); // no fatal error here ?>
相关文章推荐
- YII 使用mysql语句查询
- PHP100-6 编写一个函数解析多重嵌套数组的所有元素
- php调用face++ API使用
- TFTP & commons-net-3.3.jar
- getsockname()和getpeername()
- 简单的一个php验证登陆代码
- PHP 中 $_FILES
- php远程读取json的方法
- 状态模式 java && php
- 使用Phar来打包发布PHP程序
- PHP 获取日期所在自然周和自然月的方法
- PHP 获取图片的主色调
- 怪异php 语法, 求解!
- window下安装php的imagick和imagemagick扩展教程
- php
- linxu php连接sqlserver
- PHPexcel
- php中查询mysql 如何在WHERE meta_id IN 中用数组
- windows下ftp命令大全
- php如何定义一个常量数组