PHP学习之手册整理(四)--------运算符

运算符优先级指定了两个表达式计算的先后顺序。例如,表达式1+5*3的结果是16而不是18是因为乘号("*")的优先级比加号("+")高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。 
如果运算符优先级相同,其结合方向决定着应该从右向左求值,还是从左向右求值。 
下表按照优先级从高到低列出了运算符。
结合方向 运算符 附加信息
clone new clonenew
[ array()
++ -- ~ (int) (float) (string) (array) (object) (bool) @ 类型递增/递减
instanceof 类型
! 逻辑运算符
* / % 算术运算符
+ - . 算术运算符字符串运算符
<< >> 位运算符
== != === !== <> 比较运算符
& 位运算符引用
^ 位运算符
| 位运算符
&& 逻辑运算符
|| 逻辑运算符
? : 三元运算符
= += -= *= /= .= %= &= |= ^= <<= >>= => 赋值运算符
and 逻辑运算符
xor 逻辑运算符
or 逻辑运算符
, 多处用到

对具有相同优先级的运算符,左结合方向意味着将从左向右求值,右结合方向则反之。对于无结合方向具有相同优先级的运算符,该运算符有可能无法与其自身结合。举例说,在 PHP 中 1 < 2 > 1 是一个非法语句,而 1 <= 1 == 1则不是,因为‘==’的优先级小于‘《=’。

注意:虽然PHP明确指出有运算符的优先级,但是我个人觉得只要了解,知道有这个东西就行了,费时间去把各种运算符之间的优先级记下来是没有必要的,因为当我们不确定运算符优先级的时候可以通过()来改变该表达式的优先级。

这些运算符中值得一提的是位运算符:

位运算符允许对整型数中指定的位进行求值和操作。

位运算符
例子 名称 结果
$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")。

在PHP中向任何方向移出去的位都被丢弃。左移时右侧以零填充,符号位被移走意味着正负号不被保留。右移时左侧以符号位填充,意味着正负号被保留。

注意 : 要注意数据类型的转换。如果左右参数都是字符串,则位运算符将对字符的 ASCII 值进行操作。

用八位制来举例:
1111 1111 代表255 = 128 + 64 + 32 + 16 + 8 + 4 + 2 + 1 (分别对应每一位1)
即:
2^0=1,相应2进数为”0001″(^表示成幂指数,即:2的0次方)
2^1=2,相应2进数为”0010″
2^2=4,相应2进数为”0100″
2^3=8,相应2进数为”1000″

注意: 计算的时候记着8421原则(即上面的运算简化)就能很快的进行转换 。


还有就是数组运算符:

数组运算符
例子 名称 结果
$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

以及instanceof运算符:

instanceof用于确定一个PHP变量是否属于某一类的实例,instanceof也可用来确定一个变量是不是继承自某一父类的子类的实例,instanceof也可用于确定一个变量是不是实现了某个接口的对象的实例。

猜你喜欢

转载自blog.csdn.net/qq_41993206/article/details/80745228
今日推荐