PHP中不同括号包裹写法的三元运算符使用有什么区别?
PHP三种三元运算符写法的差异说明
你给出的三段代码运行结果完全一致,区别仅体现在括号的作用、代码可读性层面:
$str = 'ok'; $chkStr1 = isset($str) ? true : false; // 输出结果为true $chkStr2 = (isset($str)) ? true : false; // 输出结果为true $chkStr3 = (isset($str) ? true : false); // 输出结果为true
- 第一种
$chkStr1是PHP三元运算符的标准写法:没有多余括号,完全符合条件表达式 ? 成立返回值 : 不成立返回值的基础语法,可读性最高,也是生产环境最常用的写法。 - 第二种
$chkStr2多了一层包裹isset()的括号:这层括号属于可选冗余括号,不会改变逻辑执行结果。仅当判断条件是多个逻辑运算符拼接的复杂表达式时,加这类括号可以明确运算优先级、避免歧义,这里单独包裹isset()属于无实际作用的多余写法。 - 第三种
$chkStr3是把整个三元运算表达式用括号包裹:这层括号同样属于可选冗余括号,不会改变运算结果。通常只有当你需要把三元运算的结果作为子表达式嵌入其他逻辑(比如作为另一个三元运算的条件、或者函数传参)时,才需要加这层括号明确边界,单独赋值时加这层括号没有实际作用。
补充注意:如果判断条件是多个逻辑运算拼接的复杂场景,合理加括号可以避免因运算符优先级导致的逻辑bug。比如嵌套三元运算的场景下,不加括号很容易出现预期外的运算结果。
内容的提问来源于stack exchange,提问作者Mr Eblis
相关产品推荐
相关产品推荐

