【问题标题】:PHP what is wrong with the syntax of this code?PHP 这段代码的语法有什么问题?
【发布时间】:2010-12-10 05:59:47
【问题描述】:

我正在 php 中构建一些简单的验证规则,而我的 IDE (phped) 抱怨语法问题。

谁能告诉我以下有什么问题?

function notBlank($str) {
    (strlen($str) == 0) ? return false : return true;
}

phped 抱怨“意外返回”

任何建议表示赞赏。

谢谢。

【问题讨论】:

    标签: php syntax shorthand


    【解决方案1】:

    这样写:

    function notBlank($str){
       return strlen($str) != 0;
    }
    

    【讨论】:

      【解决方案2】:

      这样写:

      function notBlank($str) {
          return ( strlen($str) == 0 ? false : true );
      }
      

      【讨论】:

      • 这里不需要三元运算符。
      • 你可以去掉 false 或 true,因为操作符返回一个布尔值。
      【解决方案3】:

      您不能在三元运算符中使用 return。如果您想保留该语法,您必须执行以下操作:

      function notBlank($str = '') {
          $var = (strlen($str) == 0) ? false : true;
          return $var;
      }
      

      尽管如此,请注意默认的做事方式更清晰:

      function notBlank($str = '') {
          if(strlen($str) == 0)
              return false;
          else
              return true;
      }
      

      希望对你有帮助!

      【讨论】:

      • 不能说我喜欢“if(x) return false else return true”类型的构造,而您可以只使用“return !x”。尽管如此,这对于实际回答查询出了什么问题的原始问题(而不是仅仅解释一种不同的方法)得到了 +1。
      【解决方案4】:

      strlen() 在字符串为空时返回 0,在 PHP 中为 0==false。所以真的,没有必要将strlen() 包装在一个函数中。如果你想坚持一个布尔答案,那就投吧。即:

      (bool) strlen($string);
      

      所以你的函数可能在 if 块中被调用,而不是你的函数,你只需要

      if(strlen($string)) //etc.
      

      【讨论】:

      • 您可能仍希望将其包装在一个函数中以使您的代码更易于理解。谁说“空白”的定义在未来不会改变?如果将代码包装在函数中,您的代码能够更好地处理此类更改,因为它更加抽象。
      • @rmeador:对我来说,这听起来像是以防万一的编程。我同意,如果我计划最终实现一个更复杂的条件,那么创建一个函数是合适的。但如果我没有这个意图,我不想通过包装简单的函数调用来减慢它们的速度。
      【解决方案5】:

      GSto 的答案在这里似乎是最好的,不过您可能还想查看 php 的 empty 函数:

      http://www.php.net/empty

      【讨论】:

        猜你喜欢
        • 2015-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-25
        • 2018-09-09
        相关资源
        最近更新 更多