PHP运算符优先级

在我们前面讲PHP逻辑运算符的时候,提到了PHP运算符的优先级,所谓的运算符优先级,指的是在表达式中哪一个运算符先计算,哪一个后计算,就好像,表达式 1 + 5 * 3 的结果

是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。如果有需要的话,可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。

PHP的运算符在运算中遵循的规则是:优先级高的操作先执行,优先级低的操作后执行,如果同一优先级,则按照从左到右的顺序进行,例如,"-"是左联的,那么 1 - 2 - 3 就等同于 (1 -

2) - 3 并且结果是 -4. 另外一方面,"="是右联的,所以 $a = $b = $c 等同于 $a = ($b = $c)。

1486188938564607.gif括号内的运算符最先执行,括号的使用,哪怕在不是必要的场合下,通过括号的配对来明确标明运算顺序,而非靠运算符优先级和结合性来决定,可以提高代码的可读性。

表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。

结合方向	运算符	附加信息
无	clone new	clone和new<
左	[	array()
右	**	算术运算符
右	++ -- ~ (int) (float) (string) (array) (object) (bool) @	类型和递增/递减
无	instanceof	类型
右	!	逻辑运算符
左	* / %	算术运算符
左	+ - .	算术运算符和字符串运算符
左	<< >>	位运算符
无	< <= > >=	比较运算符
无	== != === !== <> <=>	比较运算符
左	&	位运算符和引用<
左	^	位运算符
左	|	位运算符
左	&&	逻辑运算符
左	||	逻辑运算符
左	??	比较运算符
左	? :	三元运算符
右	= += -= *= **= /= .= %= &= |= ^= <<= >>=	赋值运算符
左	and	逻辑运算符
左	xor	逻辑运算符
左	or	逻辑运算符

这么多的优先级别,如果想都记得很清楚,是不太现实的,也没有必要,如果写的表达式很复杂,而且包含了较多的运行符,不放多使用括号,想下面这样:
<?php
$a and (($b !=$c) or (5*(50-$d)));
?>

这样就能减少出现逻辑错误的可能

有时使用括号可以增强代码的可读性。例如,下面这样:
<?php
$a = 3 * 3 % 5; // (3 * 3) % 5 = 4

//三元运行的结合
$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2

$a = 1;
$b = 2;
$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5

?>

以上就是php运算符优先级顺序详解的详细内容,更多请关注php中文网其它相关文章!
时间: 2024-08-25 23:22:13

PHP运算符优先级的相关文章

运算符优先级

1        算术运算符       单目 >双目 >三目 2        关系运算符 3        逻辑运算符      &&高于||      !算术还高高 一共有十五个优先级: 1   ()  []  .  -> 2   !  ~   -(负号) ++  --   &(取变量地址)*   (type)(强制类型)    sizeof 3   * / % 4   + - 5   >> << 6   > >= <

运算符优先级问题

设计一个函数计算2n+1: int func(int n) { return n << 1 + 1; } 这个函数得到的结果是4*n. 使用左移一位代替乘以2的运算,是很好的方法,但在C/C++中"+"运算符优先级高于"<<",因此会先进行加法运算再左移两位,得到结果4*n. 正确写法是: int func(int n) { return (n << 1) + 1; }

比较++和+的运算符优先级

比较++和+的运算符优先级 1.题目    看下方代码,结果为: /** * @Title:CalNum.java * @Package:com.you.user.util * @Description:比较运算符优先级 * @author:Youhaidong(游海东) * @date:2014-7-23 下午9:54:31 * @version V1.0 */ package com.you.user.util; /** * 类功能说明 * 类修改者 修改日期 * 修改说明 * <p>Ti

C 语言运算符优先级

每当想找哪个运算符优先级高时,很多时候总是想找的就没有,真让人气愤!现在,终于有个我个人觉得非常全的,分享给大家,欢迎拍砖! C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式 右到左 单目运算符 ~ 按位取反运算符 ~表达式 ++ 自增运算符 +

Java运算符优先级(转)

Java运算符优先级 序列号 符号 名称 结合性(与操作数) 目数 说明 1 . 点 从左到右 双目   ( ) 圆括号 从左到右     [ ] 方括号 从左到右     2 + 正号 从右到左 单目   - 负号 从右到左 单目   ++ 自增 从右到左 单目 前缀增,后缀增 - - 自减 从右到左 前缀减,后缀减 ~ 按位非/取补运算 从右到左 单目   ! 逻辑非 从右到左 单目 “!”不可以与“=”联用 3 * 乘 从左到右 双目   / 除 从左到右 双目 整数除法:取商的整数部分,

JavaScript的位运算符、赋值运算符、其他运算符、三元运算符、运算符优先级

一. 位运算符 在一般的应用中,我们基本上用不到位运算符.虽然,它比较基于底层,性能和速度会非常好,而就是因为比较底层,使用的难度也很大,底层运算是转换成二进制进行运算的. 位运算符有七种,分别是:位非 NOT(~).位与 AND(&).位或 OR(|).位异或 XOR(^).左移(<<).有符号右移(>>).无符号右移(>>>). var box = ~25; //-26 var box = 25 & 3; //1 var box = 25 |

demopu教你学php,php运算符优先级

demopu教你学php,php运算符优先级例子 <?php$a = 3 * 3 % 5; // (3 * 3) % 5 = 4$a = true ? 0 : true ? 1 : 2; // (true ? 0 : true) ? 1 : 2 = 2 $a = 1;$b = 2;$a = $b += 3; // $a = ($b += 3) -> $a = 5, $b = 5?> 尽管 = 比其它大多数的运算符的优先级低,PHP 仍旧允许类似如下的表达式:if (!$a = foo()

C语言运算符优先级

C语言运算符优先级 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 -- () 圆括号 (表达式)/函数名(形参表) -- . 成员选择(对象) 对象.成员名 -- -> 成员选择(指针) 对象指针->成员名 -- 2 - 负号运算符 -表达式 右到左 单目运算符 ~ 按位取反运算符 ~表达式 ++ 自增运算符 ++变量名/变量名++ -- 自减运算符 --变量名/变量名-- * 取值运算符 *指针变量 & 取地址运算符 &

利用运算符优先级实现if else

利用运算符优先级实现 if(a){alert('true')}else{alert('false') } a && (alert('true'),1) || alert('false') 或者用三目运算符 a ? alert('true') : alert('false'); 一.使用常见的三元操作符 if (foo) bar(); else baz(); ==> foo?bar():baz();if (!foo) bar(); else baz(); ==> foo?baz(

JS运算符优先级

  记录  随时查看 JS运算符优先级,布布扣,bubuko.com