【发布时间】:2009-12-16 08:19:21
【问题描述】:
我正在修改一个脚本以更好地满足我的需要,我在代码中遇到了这一行:
return isset($_COOKIE[$parameter_name]) ? $_COOKIE[$parameter_name] : "";
我知道函数本身本质上是一个 cookie getter 方法,但我不太确定该语法(即“?”和“:”)是什么意思。如果这是一个非常愚蠢的问题,我深表歉意,但有人可以向我解释一下吗?
【问题讨论】:
我正在修改一个脚本以更好地满足我的需要,我在代码中遇到了这一行:
return isset($_COOKIE[$parameter_name]) ? $_COOKIE[$parameter_name] : "";
我知道函数本身本质上是一个 cookie getter 方法,但我不太确定该语法(即“?”和“:”)是什么意思。如果这是一个非常愚蠢的问题,我深表歉意,但有人可以向我解释一下吗?
【问题讨论】:
这是一个ternary operation,基本上是一种更紧凑的 if/then/else 编写方式。
所以在您的代码示例中,它被使用而不是编写:
if (isset($_COOKIE[$parameter_name])) {
return $_COOKIE[$parameter_name];
} else {
return "";
}
【讨论】:
这是一个ternary operation,它不是 PHP 特定的,并且存在于大多数语言中。
(condition) ? true_case : false_case
在我看来,应该只像你的例子那样用作短衬里。否则可读性会受到影响——所以永远不要嵌套三元操作(尽管可以这样做)。
【讨论】:
? : 是三元运算符。 if a then b else c 非常快:
if (a) { return b; } else { return c; }
相当于:
return a ? b : c;
【讨论】:
return isset($_COOKIE[$parameter_name]) ? $_COOKIE[$parameter_name] : "";
函数返回:
$_COOKIE[$parameter_name]
如果具有指定参数名称的 $_COOKIe 存在,则为空字符串。
原型:
condition ? this runs if condition true : this runs if condition false;
【讨论】: