PHP运算符优先级的求值顺序是怎样的
Admin 2022-09-22 群英技术资讯 1580 次浏览
这篇主要是介绍“PHP运算符优先级的求值顺序是怎样的”的内容了,下文有实例供大家参考,对大家了解操作过程或相关知识有一定的帮助,而且实用性强,希望这篇文章能帮助大家解决PHP运算符优先级的求值顺序是怎样的的问题,下面我们一起来了解看看吧。运算符优先级指定了两个表达式绑定得有多“紧密”。例如,表达式 1 + 5 * 3 的结果是 16 而不是 18 是因为乘号(“*”)的优先级比加号(“+”)高。必要时可以用括号来强制改变优先级。例如:(1 + 5) * 3 的值为 18。
如果运算符优先级相同,其结合方向决定着应该从右向左求值,还是从左向右求值——见下例。
下表按照优先级从高到低列出了运算符。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
运算符优先级| 结合方向 | 运算符 | 附加信息 |
|---|---|---|
| 无 | clone new | clone 和 new |
| 左 | [ | array() |
| 右 | ++ -- ~ (int) (float) (string) (array) (object) (bool) @ | 类型和递增/递减 |
| 无 | instanceof | 类型 |
| 右 | ! | 逻辑运算符 |
| 左 | * / % | 算术运算符 |
| 左 | + - . | 算术运算符和字符串运算符 |
| 左 | << >> | 位运算符 |
| 无 | == != === !== <> | 比较运算符 |
| 左 | & | 位运算符和引用 |
| 左 | ^ | 位运算符 |
| 左 | | | 位运算符 |
| 左 | && | 逻辑运算符 |
| 左 | || | 逻辑运算符 |
| 左 | ? : | 三元运算符 |
| 右 | = += -= *= /= .= %= &= |= ^= <<= >>= => | 赋值运算符 |
| 左 | and | 逻辑运算符 |
| 左 | xor | 逻辑运算符 |
| 左 | or | 逻辑运算符 |
| 左 | , | 多处用到 |
对具有相同优先级的运算符,左结合方向意味着将从左向右求值,右结合方向则反之。对于无结合方向具有相同优先级的运算符,该运算符有可能无法与其自身结合。举例说,在 PHP 中 1 < 2 > 1 是一个非法语句,而 1 <= 1 == 1 则不是。因为 T_IS_EQUAL 运算符的优先级比 T_IS_SMALLER_OR_EQUAL 的运算符要低。
Example #1 结合方向
<?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 // mixing ++ and + produces undefined behavior $a = 1; echo ++$a + $a++; // may print 4 or 5 ?>
使用括号,即使在并不严格需要时,通常都可以增强代码的可读性。
Note:
尽管 = 比其它大多数的运算符的优先级低,PHP 仍旧允许类似如下的表达式:if (!$a = foo()),在此例中 foo() 的返回值被赋给了 $a。
示例:
在命令行运行如下命令,打印结果为false:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
凡是热爱摄影并且玩过单反相机的人都应该知道图像直方图这个名词吧,说白了,图像直方图就是通过计算每个色阶在总像素中所占的比例来反映图片是否曝光严重,那么如果在php中使用Imagick如何实现图像直方图?跟小编一起来下文了解一下吧。
这篇文章主要介绍了php+pdo实现的购物车类,结合完整实例形式分析了PHP结合pdo操作数据库读写实现购物车功能相关实现与使用方法,需要的朋友可以参考下
swoole+Redis实现实时数据推送。设置单进程保护;进入程序,定义相关配置:socket会话的超时时间,根据业务场景设置,这里设置为永不超时;初始化Redis连接;脚本重启时,清除历史的数据。
用法:1、dd()函数用于打印出给定的变量和结束脚本的运行,语法为“dd(变量)”;2、asset()函数用于引入静态文件,生成一个url,语法为“asset(文件路径)”;3、“base_path()”函数用于获取项目根目录路径。
integer类型就是集合Z={...,-2,-1,0,1,2,...}中的一个数字。integer可以已10进制,8进制,16进制表示。用八进制表示的时候,数字需要已0(零)开头;用十六进制表示的时候,数字需要已0x(零x)或者0X(零大写X)开头; integer溢出:integer溢出的时候,会自动的转化为float类型。同样的,如果integer类型的
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 ICP核准(ICP备案)粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008