问号冒号操作符的含义

这个问题在这里已经有了答案:

  • 参考 - 这个符号在PHP中的含义是什么? 18个答案

  • 它是if语句的简写。

    $username = $_COOKIE['user'] ?: getusername($_COOKIE['user']);
    

    是相同的

    if( $_COOKIE['user'] ) 
    {
        $username = $_COOKIE['user'];
    } 
    else
    {
        $username = getusername($_COOKIE['user']); 
    }
    

    请参阅测试套件:https://3v4l.org/6XMc4

    但在这个例子中,函数'getusername'可能无法正确工作,因为只有当$_COOKIE['user']empty时才会碰到else 。 所以, getusername()里面的参数也是空的。


    这是短的PHP,例如:

    (true == true ? echo "this is true" : "this is false")

    写出这意味着:

    if (true == true) {
        echo "This is true";
    }
    else {
        echo "This is false";
    }
    

    在你的例子中,只有一个else语句。


    它被称为三元运算符,类似于通常所称的内联if。 例如,以下两个例子:

    a) $genderString = $genderAbbreviation == "M" ? "Male" : "Female"; $genderString = $genderAbbreviation == "M" ? "Male" : "Female";

    b)

    if ($genderAbbreviation == "M")
    {
        $genderString = "Male";
    }
    else
    {
        $genderString = "Female";
    }
    

    这两个都会产生同样的效果。 问号前面的语句被评估为true或false,然后如果为真,冒号前面的语句被执行,并且如果为false,冒号后面的语句被执行。

    有关更多信息,可以在PHP文档的以下页面查看标题为“三元运算符”的部分:

    http://www.php.net/manual/en/language.operators.comparison.php

    链接地址: http://www.djcxy.com/p/10213.html

    上一篇: Meaning of question mark colon operator

    下一篇: why use @before variable. can someone pls explain