什么问题以及冒号(:)在php中做什么,特别是在这一行?

时间:2016-05-20 10:54:06

标签: php wordpress

我正在阅读一些WordPress教程,我不知道这里发生了什么,我发现一个问号可以代表一个if语句,但是我真的不知道是什么以下行实际上正在做。

$paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1;

有人关心帮我吗? :)

4 个答案:

答案 0 :(得分:4)

这称为三元运算符。它以这种形式呈现:

condition ? value_if_condition_true : value_if_condition_false;

例如,您可以将此表达式的结果用于作业,让我们说:

$load_page = is_user_logged_in() ? true : false;

事实上,这相当于写作:

 if (is_user_logged_in())
     $load_page = true;
 else
     $load_page = false;

编辑因为我喜欢三元运算符,所以我想写更多。 与传统的else / if格式相比,此运算符形式对性能或行为没有影响,仅用于成为优雅的单行内容。 (这就是为什么有些语言没有实现它的原因,认为使用N种方法编写相同的指令是不必要的,而且往往是不好的做法)

但为了表明它有多优雅,想象一下你知道用户的年龄,以及 age_of_subscription 到你的网站,并且你想要显示一条消息,取决于根据这些规则这两个变量:

  • 如果用户超过20且订阅超过3年,则可以享受折扣
  • 如果用户小于20且订阅超过1年,则可以享受折扣
  • 任何其他情况中,用户正在支付全价。

在经典的IF / ELSE表格中,你会写:

if ($age > 20)
{
    $text = "You are above 20 and you have been a user for ";
    if ($age_of_subscription > 3)
    {
        $text .= "more than 3 years so you are allowed a discount";
    }
    else
    {
        $text .= "less than 3 years so you are paying full price";
    }

}
else
{
    $text = "You are below or 20 and you have been a user for ";
    if ($age_of_subscription > 1)
    {
        $text .= "more than 1 year so you are allowed a discount";
    }
    else
    {
        $text .= "less than 1 year so you are paying full price";
    }


}
echo $text;

但是现在,请注意三元运算符之美:

echo 'You are ',
($age > 20 ? 
    ($age_of_subscription > 3 ? 'above 20 and you have been a user for more than 3 years
\ so you are allowed a discount' : 'above 20 and you have been a user for less than 3 years
\ so you are paying full price.')
    : ($age_of_subscription > 1 ? 'below or 20 and you have been a user for more than 1 year
\ so you are allowed a discount' : 'below or 20 and you have been a user for less than 1 year
\ so you are paying full price.')); // pretty uh?

答案 1 :(得分:0)

它是php中的条件运算符,也称为三元运算符。因为它有3个操作数。

 (expression) ? value to be returned if expression is true : value to be returned if expression is false;
实际上它是if-else语句的简短版本。在以下链接

上查找示例
[http://www.tutorialspoint.com/php/php_conditional_operator_examples.htm][1]

答案 2 :(得分:0)

您可以在此处阅读有关三元运算符的所有内容:

php.net manual - ternary operator

答案 3 :(得分:-1)

以下代码段

式T:F;

是if else条件的简短评估方法。 ' S'涉及条件陈述,' T'是语句为真时要执行的语句。

如果' S'是假的,' F'被执行。