The PSR-2 standard明确省略对操作符的任何意见:

There are many elements of style and practice intentionally omitted by this guide. These include but are not limited to:

… Operators and assignment

由于括号用于对表达式进行分组,因此您的示例没有多大意义:

$error = ($error_status) ? 'Error' : 'No Error';

这里围绕括号中的单个变量没有任何意义.更复杂的情况可能会从括号中受益,但在大多数情况下,它们只是为了可读性.

更常见的模式是始终围绕整个三元表达式:

$error = ($error_status ? 'Error' : 'No Error');

这样做的主要动机是PHP中的三元运算符具有相当笨拙的关联性和优先级,因此在复杂表达式中使用它通常会产生意外/无用的结果.

常见的情况是字符串连接,例如:

$error = 'Status: ' . $error_status ? 'Error' : 'No Error';

这里连接(.运算符)实际上是在三元运算符之前求值的,因此条件总是非空字符串(以’Status:’开头),结果总是得到字符串Error’.

括号是必要的,以防止这种情况:

$error = 'Status: ' . ($error_status ? 'Error' : 'No Error');

当“堆叠”三元表达式以构成if-elseif链的等价时,存在类似的情况,因为PHP历史早期的错误意味着从左到右依次评估多个三元运算符,而不是在条件时快捷地整个假分支是真的.

the PHP manual的一个例子更清楚地解释了这一点:

// on first glance, the following appears to output 'true'

echo (true?'true':false?'t':'f');

// however, the actual output of the above is 't'

// this is because ternary expressions are evaluated from left to right

// the following is a more obvious version of the same code as above

echo ((true ? 'true' : false) ? 't' : 'f');

// here, you can see that the first expression is evaluated to 'true', which

// in turn evaluates to (bool)true, thus returning the true branch of the

// second ternary expression.

在php里bd2什么意思,PSR-2 PHP三元语法中是否需要括号?相关推荐

  1. java编程里的values怎么使用,详解Java编程中super关键字的用法

    这篇文章主要介绍了Java编程中this与super关键字的用法,包括从内存结构方面分析super的作用域,需要的朋友可以参考下 通过用static来定义方法或成员,为我们编程提供了某种便利,从某种程 ...

  2. 在中断程序里修改全局变量的童鞋注意啦~(C中的volatile作用 转载~)

    一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了.精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存 ...

  3. 量词逻辑量词里面的v表示?_知识表示能力问答中的人工智能量词(MCQ)

    量词逻辑量词里面的v表示? 1) How many types of quantifiers are there that are used to represent knowledge? 3 typ ...

  4. 源码里没有configure_深入源码理解.NET Core中Startup的注册及运行

    开发.NET Core应用,直接映入眼帘的就是Startup类和Program类,它们是.NET Core应用程序的起点.通过使用Startup,可以配置化处理所有向应用程序所做的请求的管道,同时也可 ...

  5. tp5讲一个值传到另外一个控制里_统计起源 第四讲:黑暗中诞生的天才——自由度与标准差...

    费歇尔小时候有很严重的视力损伤,因此医生禁止他晚上在灯光下阅读.即使后来上学时,他的数学导师也在黑暗中教他数学,黑暗使人强大,长期在黑暗中脑补使得费歇尔形成了强大的几何能力.这也是为什么费歇尔可以很轻 ...

  6. 知乎里怎么看个人简介_怎么写简历中的自我评价?

    真的不忍心再看到这么多像我一样的失足青年...所以必须要来说两句了. [自我评价]可以说是简历上最大的雷区了,绝大部分人都踩过,然后被炸死,见不到迷人的HR... ------------------ ...

  7. python里load什么意思_【python】json中load和loads区别

    相同点 dump 和 dumps 都实现了序列化 load 和 loads 都实现反序列化 变量从内存中变成可存储或传输的过程称之为序列化 序列化是将对象状态转化为可保存或可传输格式的过程. 变量内容 ...

  8. 杰里AC695N开发详解汇总(持续更新中)

    一.杰里695N系列开发快速入门 杰里695N系列(soundbox)之 0.0 开发环境搭建 杰里695N系列(soundbox)之 1.0 SDK快速入门(1) 杰里695N系列(soundbox ...

  9. 在中断程序里修改全局变量的童鞋注意啦~(C中的volatile作用 )

    一个定义为volatile的变量是说这变量可能会被意想不到地改变,这样,编译器就不会去假设这个变量的值了.精确地说就是,优化器在用到这个变量时必须每次都小心地重新读取这个变量的值,而不是使用保存在寄存 ...

最新文章

  1. CMS 被废弃了,该怎么办呢?
  2. html 页面宽度和背景颜色,CSS:设置背景颜色为窗口宽度的50%
  3. 软件测试用例设计实用经验之谈
  4. uvalive5983(二分+dp)
  5. 小问题: windows组件调用失败,无法加载安装安装程序:Wbemupgd.dll
  6. 2021.08.24学习内容torch.utils.data.DataLoader以及CUDA与GPU的关系
  7. matlab矩阵的低秩分解,低秩分解的matlab代码看不懂,分解的两个矩阵在哪呀??...
  8. 【报告分享】2021年中国数字经济就业发展研究报告.pdf(附下载链接)
  9. 【Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之RAC 工作原理和相关组件(三)...
  10. 限制mysql资源使用率_MySQL--限制用户使用资源
  11. 05.第六章、进度管理
  12. phpstudy配置sg11
  13. 电脑x64和x86安装软件的区别讲解分享
  14. java-net-php-python-springboot办公自动化系统计算机毕业设计程序
  15. Qtum量子链研究院:Qtum Plasma MVP 技术详解
  16. 数据库不能读取也不能打开的解决办法
  17. SpringMVC中的文件上传与下载,json转换,及三大框架的整合
  18. linux系统执行.exe文件
  19. html 获取登录状态,登录后如何获取HTML代码?
  20. Linux/Centos: OpenSSL中文手册之EVP库详解

热门文章

  1. tcp_wrapper:简单的基于主机的访问控制工具
  2. shell编程中if []的用法注意
  3. HAProxy+Hive构建高可用数据挖掘集群
  4. 项目管理笔记(观念)
  5. 星辰小组——第一阶段评分+各小组的意见反馈
  6. 微信公众号开发 包括服务器配置、java web项目搭建、tomcat手动发布web项目、微信开发所需的url和token验证 2017.12.2...
  7. Oracle 11g数据库详细安装步骤图解
  8. ubuntu14操作系统chrome标签和书签乱码解决
  9. RBAC用户角色权限设计方案(转)
  10. Java请求参数检查,Java如何检查servlet请求中是否存在参数?