【问题标题】:Where to return false in a PHP function?在 PHP 函数中在哪里返回 false?
【发布时间】:2011-04-13 15:07:06
【问题描述】:

这样做

function doThings(){
  if($oh){
    return $oh;
  }
  return false;
}

等于这个

function doThings(){
  if($oh){
    return $oh;
  }else{
    return false;
  }
}

谢谢!

【问题讨论】:

  • 你试过了吗?发生了什么?
  • 这两个功能都有效。为什么不只比较结果?您是否想知道它们在解释器中的结果是否相同?

标签: php function coding-style


【解决方案1】:

是的,两者都是一样的。就个人而言,我更喜欢在同一个地方退出一个函数。例如

function doThings(){
  $flag = false;
  if($oh){
    $flag = $oh;
  }
  return $flag;   
}

【讨论】:

    【解决方案2】:

    在您上面概述的情况下,是的。两者都应该可以正常工作。我更喜欢第一种方法,少打字等等。

    【讨论】:

      【解决方案3】:

      是的,这些功能在行为上完全相同。

      【讨论】:

        【解决方案4】:

        是的。

        它们或多或少等于:

        function doThings(){
            return $oh;
        }
        

        这并不完全正确,因为 PHP 具有除 false 之外的其他“falsey”值,但如果您想返回 $oh 或 falsey 值,那么这将正常工作。

        另一种编写等效函数的方法是:

        function doThings(){
            return $oh ? $oh : false;
        }
        

        【讨论】:

        • return $oh || false 在 PHP 中不像在 JavaScript 中那样工作。它总是返回一个布尔值(真或假)。
        • $result = $oh OR false 将按预期工作,因为OR 的优先级低于返回值(但第二个选项必须是布尔值)。所以你可以做$result = $oh OR false; return $result;。但是,如果您使用的是 php 5.3+,只需执行 return $oh ?: false;
        【解决方案5】:

        我会这样写:

        function doThings() {
          return $oh ?: false;
        }
        

        或者使用早期版本的 PHP:

        function doThings() {
          return $oh ? $oh : false;
        }
        

        或者,取决于功能:

        function doThings() {
          $oh = null; // set to some default;
        
          // do stuff
        
          return $oh;
        }
        

        【讨论】:

          【解决方案6】:

          要回答这个问题,我们必须首先质疑我们作为个人和作为一个民族的人......开玩笑吧,就所有密集目的而言,它们都是相同的。

          【讨论】:

            【解决方案7】:

            是的,它们是一样的。

            快速提示:

            我更喜欢以下:

            function do() {
                if (!$oh) {
                  return false;
                }
                return $oh;
            }
            

            这样你就没有第二个例子中的额外括号了。但是您始终知道返回值的位置(在函数的末尾)。这样可以更快地定位和浏览函数。

            【讨论】:

              【解决方案8】:

              莫:

              如前所述,这两个函数的作用完全相同。您可能还想尝试做这样的事情(在某些情况下这可能是有益的)

              function doSomething() {
                $return_value = false;
              
                if($oh) {
                  $return_value = true;
                }
              
                return $return_value;
              }
              

              这并没有什么特别的,它只是一个重组。

              【讨论】:

                【解决方案9】:

                两者都做同样的事情。一旦遇到 return 语句,控制权就会返回给调用这个函数的代码。

                第一个比第二个更受欢迎,因为代码更少。

                【讨论】:

                  【解决方案10】:
                  1. 两者具有相同的行为。
                  2. 您可以放置​​取决于您的方案。

                  【讨论】:

                    【解决方案11】:

                    请注意,由于 return 是一种语言结构而不是函数,因此不需要在其参数周围加上括号。将它们排除在外是很常见的,实际上您应该这样做,因为在这种情况下 PHP 要做的工作较少。

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2014-04-26
                      • 2014-10-15
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多