2009-12-16 96 views
2

我正在修改剧本,以更好地满足我的需求,我在代码跨越这条线进来:PHP中的这种语法是什么?

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

我知道本身的功能本质上是一个cookie的getter方法,但我不太清楚该语法(即“?”和“:”)的含义。我很抱歉,如果这是一个非常愚蠢的问题,但有人可以解释给我?

回答

13

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

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

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

的? :是三元操作符。它是一种非常快的,如果那么b,否则C:

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

等同于:

return a ? b : c; 
6

这是一个ternary operation这是不是PHP具体,存在于大多数汉语语言。

(condition) ? true_case : false_case 

在我看来,应该只用于你的例子中的短一行。否则可读性会受到影响 - 因此不要嵌套三元操作(尽管可以这样做)。

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;