【问题标题】:Correct way to write a ternary operation in PHP在 PHP 中编写三元运算的正确方法
【发布时间】:2015-07-20 16:06:01
【问题描述】:

据我所知,在 PHP 中编写三元运算有两种方法:

$var = ( isset( $i['var'] ) ? $i['var'] : "" );

$var = ( isset( $i['var'] ) ) ? $i['var'] : "";

这些方法中的一种是“正确的”,还是一种比另一种表现更好,或者它们都可以互换?

【问题讨论】:

  • 没有“两种方式”,有无限种方式,如果您打算考虑添加括号是一种新的书写方式一个运营商。您可以添加任意数量的括号,它不会改变任何东西。他们是一样的。您错过了带有 no 括号的明显的一个,并且唯一一个可以说是“正确”的:$var = isset($x) ? $y : $z
  • 这就像你问什么是正确的一样:$i = 1;$i = ((((((((((1)))))))))); 在只有一种情况下你真的想要第一个,那就是如果你嵌套三元,你不想这样做。
  • 这两种形式的括号都太多:括号通常用于分组逻辑运算符,如 AND 和 OR。这里都没有使用,所以唯一使用的圆括号应该是isset()
  • 好了,我们开始吧,你每天都会学到新东西。感谢你们的反对,伙计们!

标签: php ternary-operator


【解决方案1】:

两者都是正确的。实际上,在您的示例中,您甚至根本不需要括号。你可以这样做:

$var = isset( $i['var'] ) ? $i['var'] : "";

括号不会对代码的性能产生任何影响。他们在那里有两个原因:

  1. 消除编译器的歧义。
    这不适用于您给出的简单示例,因为在运算符中只检查一件事。不过,在一些更复杂的情况下,您可能需要括号。
  2. 使其更具可读性。
    同样,这个简单的例子无论有没有括号都非常易读,所以它不会产生太大的可能性。但它们可能会帮助您了解当您有更复杂的代码时发生了什么,即使就编译器而言没有任何歧义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-02-13
    • 2021-10-27
    • 2021-07-18
    • 1970-01-01
    • 2012-04-01
    • 2020-02-13
    • 2016-05-21
    • 1970-01-01
    相关资源
    最近更新 更多