【问题标题】:How to determine the right number if "(" and ")" for a boolean IF statement? [closed]如果布尔 IF 语句的“(”和“)”,如何确定正确的数字? [关闭]
【发布时间】:2013-08-05 07:40:44
【问题描述】:

这是正确的吗?它应该以某种方式变得更简单吗?上面是否应该有更多的"("")",这是适用于所有情况的安全“if”语句吗?

if (empty($depart_raw) || empty($arrival_raw)) {
    return "";
}

我问是因为我对如何知道有多少 "("")" 围绕这些语句感到困惑。为了清楚起见,上面是试图检查两个变量中的任何一个是否为空,然后为函数返回一个空白。

【问题讨论】:

  • 此类问题的问题在于,我们现在只能回答是或否。您尝试过代码吗?它奏效了吗?如果你没有信心说出它是否真的做到了你想要的,那就写一个单元测试
  • 这是正确和最佳的。不过,我会质疑empty 的使用。阅读:The Definitive Guide To PHP's isset And empty
  • 你的代码很好,它做你认为它做的事
  • @Gordon 我尝试了上面的代码,是的,它可以工作,但是我对 PHP 还没有广泛的了解,这就是我问的原因。我正在寻找一种方法,以便将来不会从比我更有经验的人那里对此感到困惑。如果您每天花 8 小时编写 PHP,那么您有一些值得分享的东西,如果您好心的话。
  • @deceze 感谢您的指点。因此,根据您的经验,最好检查 empty 和 isset?

标签: php if-statement boolean


【解决方案1】:

if 语句需要一组括号:

if (...)

其中的任何... 表达式是否需要括号取决于表达式是什么。 empty 是一种 function 语言结构,它需要自己的一组括号作为函数调用的一部分:

empty($a)

由运算符连接的两个表达式不需要括号;这很好:

$a || $b
empty($a) || empty($b)

如果您有多个运算符,您可能需要使用括号来影响它们的优先级分组,就像在数学中一样:

(1 + 2) * 3
1 + (2 * 3)
($a || $b) && $c
$a || ($b && $c)

根据需要进行调整。

【讨论】:

  • 1 + (2 * 3)$a || ($b && $c) 不需要括号 :) 有关优先级的更多信息:php.net/manual/en/language.operators.precedence.php
  • 我在这里可视化一个例子! :P
  • 我知道,我确实以这种方式使用括号以提高可读性。
猜你喜欢
  • 2013-10-09
  • 2017-05-12
  • 2014-01-07
  • 2015-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-01
相关资源
最近更新 更多