我正在修改脚本以更好地满足我的需求,我在代码中遇到了这一行:
return isset($_COOKIE[$parameter_name]) ? $_COOKIE[$parameter_name] : "";
我知道函数本身本质上是一个cookie getter方法,但我不太确定那个语法(即“?”和“:”)的含义。如果这是一个非常愚蠢的问题我会道歉,但有人可以向我解释一下吗?
答案 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;