PHP中的这种语法是什么?

时间:2009-12-16 08:19:22

标签: php syntax cookies

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

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

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

4 个答案:

答案 0 :(得分:13)

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

所以在你的代码示例中,它被使用而不是必须写:

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

答案 1 :(得分:6)

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

(condition) ? true_case : false_case 

在我看来,只应该像你的例子那样用作短的一个衬里。否则readabilty会受到影响 - 所以永远不要嵌套三元操作(虽然它可以这样做)。

答案 2 :(得分:2)

? :是三元运算符。它是一个非常快的,如果然后另外c:

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

相当于:

return a ? b : c;

答案 3 :(得分:1)

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

函数返回:

$_COOKIE[$parameter_name]

如果$ _COOKIe带有指定的parameter_name,则为空字符串。

<强>原型

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