您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

【PHP系列教程】(7)PHP中的运算符

2025/12/24 13:25:00发布24次查看
一、运算符的优先级 运算符优先级指定了两个表达式绑定得有多紧密。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(*)的优先级比加号(+)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。 下表从低到高列出了运算符的优
一、运算符的优先级运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。
下表从低到高列出了运算符的优先级。
结合方向运算符
左 ,
左 or
左 xor
左 and
右 print
右 = += -= *= /= .= %= &= |= ^= ~= >=
左 ? :
左 ||
左 &&
左 |
左 ^
左 &
无 == != === !==
无 >=
左 >
左 + - .
左 * / %
右 ! ~ ++ -- (int) (float) (string) (array) (object) @
右 [
无 new
注: 尽管 ! 比 = 的优先级高,php 仍旧允许类似如下的表达式
二、算术运算符
例子名称结果
$a + $b 加法 $a 和 $b 的和。
$a - $b 减法 $a 和 $b 的差。
$a * $b 乘法 $a 和 $b 的积。
$a / $b 除法 $a 除以 $b 的商。
$a % $b 取模 $a 除以 $b 的余数。
除号(“/”)总是返回浮点数,即使两个运算数是整数(或由字符串转换成的整数)也是这样。
三、赋值运算符基本的赋值运算符是“=”。你一开始可能会以为它是“等于”,其实不是的。它实际上意味着把右边表达式的值赋给左运算数。
赋值运算表达式的值也就是所赋的值。也就是说,“$a = 3”的值是 3。这样就可以使你做一些小技巧:
$a = ($b = 4) + 5; // $a is equal to 9 now, and $b has been set to 4.
在基本赋值运算符之外,还有适合于所有二元算术和字符串运算符的“组和运算符”,这可以让你在一个表达式中使用它的值并把表达式的结果赋给它,例如:
$a = 3;$a += 5; // sets $a to 8, as if we had said: $a = $a + 5;$b = hello ;$b .= there!; // sets $b to hello there!, just like $b = $b . there!;
注意:赋值运算将原变量的值拷贝到新变量中(传值赋值),所以改变其中一个并不影响另一个。这也适合于你在在紧密循环中拷贝一些值例如大数值。php 4 支持引用赋值,用 $var = &$othervar; 语法,但在 php 3 中不可能这样做。“引用赋值”意味着两个变量都指向同一个数据,没有任何数据的拷贝。  
四、位运算符运算符允许对整型数中指定的位进行置位。如果左右参数都是字符串,则位运算符将操作这个字符串中的字符。
位运算的表格如下:
例子名称结果
$a & $b and(按位与) 将在 $a 和 $b 中都为 1 的位设为 1。
$a | $b or(按位或) 将在 $a 或者 $b 中为 1 的位设为 1。
$a ^ $b xor(按位异或) 将在 $a 和 $b 中不同的位设为 1。
~ $a not(按位非) 将 $a 中为 0 的位设为 1,反之亦然。
$a shift left(左移) 将 $a 中的位向左移动 $b 次(每一次移动都表示“乘以 2”)。
$a >> $b shift right(右移) 将 $a 中的位向右移动 $b 次(每一次移动都表示“除以 2”)。
五、比较运算符比较运算符,如同它们名称所暗示的,允许你对两个值进行比较。
例子名称结果
$a == $b 等于 true,如果 $a 等于 $b。
$a === $b 全等 true,如果 $a 等于 $b,并且它们的类型也相同。(php 4 only)
$a != $b 不等 true,如果 $a 不等于 $b。
$a $b 不等 true,如果 $a 不等于 $b。
$a !== $b 非全等 true,如果 $a 不等于 $b,或者它们的类型不同。(php 4 only)
$a 小与 true,如果 $a 严格小于 $b。
$a > $b 大于 true,如果 $a 严格 $b。
$a 小于等于 true,如果 $a 小于或者等于 $b。
$a >= $b 大于等于 true,如果 $a 大于或者等于 $b。
另外一个条件运算符是“?:”(或三元)运算符,它和 c 以及很多其它语言的操作一样。
对于表达式 (expr1) ? (expr2) : (expr3),如果 expr1 的值为 true,则此表达式的值为 expr2,如果 expr1 的值为 false,则此表达式的值为 expr3。
六、错误控制运算符php 支持一个错误控制运算符:@。当将其放置在一个 php 表达式之前,该表达式可能产生的任何错误信息都被忽略掉。
如果激活了 track_errors 特性,表达式所产生的任何错误信息都被存放在变量 $php_errormsg 中。此变量在每次出错时都会被覆盖,所以如果想用它的话就要尽早检查。
注: @ 运算符只对表达式有效。对新手来说一个简单的规则就是:如果你能从某处得到值,你就能在它前面加上 @ 运算符。例如,你可以把它放在变量,函数和 include() 调用,常量,等等之前。不能把它放在函数或类的定义之前,也不能用于条件结构例如 if 和 foreach 等。
警告:目前的“@”错误控制运算符前缀甚至使导致脚本终止的严重错误的错误报告也失效。这意味着如果你在某个不存在或类型错误的函数调用前用了“@”来抑制错误信息,那脚本会没有任何迹象显示原因而死在那里。 
七、执行运算符php 支持一个执行运算符:反引号(``)。注意这不是单引号!php 将尝试将反引号中的内容作为外壳命令来执行,并将其输出信息返回(例如,可以赋给一个变量而不是简单地丢弃到标准输出)。使用反引号运算符“`”的效果与函数 shell_exec() 相同。
注: 反引号运算符在激活了 安全模式 或者关闭了 shell_exec() 时是无效的。 
八、加一/减一运算符php 支持 c 风格的前/后加一与减一运算符。
例子名称效果
++$a 前加 $a 的值加一,然后返回 $a。
$a++ 后加 返回 $a,然后将 $a 的值加一。
--$a 前减 $a 的值减一, 然后返回 $a。
$a-- 后减 返回 $a,然后将 $a 的值减一。
一个简单的示例脚本:
在处理字符变量的算数运算时,php 沿袭了 perl 的习惯,而非 c 的。例如,在 perl 中 'z'+1 将得到 'aa',而在 c 中,'z'+1 将得到 '[' { ord('z') == 90, ord('[') == 91 )。
代码1:涉及字符变量的算数运算
apple, b => banana);$b = array(a =>pear, b => strawberry, c => cherry);$c = $a + $b;var_dump($c);
执行后,此脚本会显示:
array(3) {
  [a]=>
  string(5) apple
  [b]=>
  string(6) banana
  [c]=>
  string(6) cherry
}
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product