标签:php
【运算符优先级】
| 结合方向 | 运算符 | 附加信息 |
|---|---|---|
| 无 | 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 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。 |
【类型运算符】
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
?>标签:php
原文地址:http://blog.csdn.net/aoshilang2249/article/details/46640703