【问题标题】:What is this syntax in PHP?PHP中的这种语法是什么?
【发布时间】:2009-12-16 08:19:21
【问题描述】:

我正在修改一个脚本以更好地满足我的需要,我在代码中遇到了这一行:

return isset($_COOKIE[$parameter_name]) ? $_COOKIE[$parameter_name] : "";

我知道函数本身本质上是一个 cookie getter 方法,但我不太确定该语法(即“?”和“:”)是什么意思。如果这是一个非常愚蠢的问题,我深表歉意,但有人可以向我解释一下吗?

【问题讨论】:

    标签: php syntax cookies


    【解决方案1】:

    这是一个ternary operation,基本上是一种更紧凑的 if/then/else 编写方式。

    所以在您的代码示例中,它被使用而不是编写:

    if (isset($_COOKIE[$parameter_name])) {
        return $_COOKIE[$parameter_name];
    } else {
        return "";
    }
    

    【讨论】:

      【解决方案2】:

      这是一个ternary operation,它不是 PHP 特定的,并且存在于大多数语言中。

      (condition) ? true_case : false_case 
      

      在我看来,应该只像你的例子那样用作短衬里。否则可读性会受到影响——所以永远不要嵌套三元操作(尽管可以这样做)。

      【讨论】:

        【解决方案3】:

        ? : 是三元运算符。 if a then b else c 非常快:

        if (a) { return b; } else { return c; }
        

        相当于:

        return a ? b : c;
        

        【讨论】:

          【解决方案4】:
           return isset($_COOKIE[$parameter_name]) ? $_COOKIE[$parameter_name] : "";
          

          函数返回:

          $_COOKIE[$parameter_name]
          

          如果具有指定参数名称的 $_COOKIe 存在,则为空字符串。

          原型

          condition ? this runs if condition true : this runs if condition false;
          

          【讨论】:

            猜你喜欢
            • 2015-09-24
            • 1970-01-01
            • 2016-01-21
            • 1970-01-01
            • 2011-01-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多