php - Meaning of question mark colon operator [duplicate]

左心房为你撑大大i 提交于 2019-12-08 14:54:03

问题


What does ?: in this line mean?

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

Thank you.


回答1:


It is a shorthand for an if statement.

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

Is the same as

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

see test suite here: https://3v4l.org/6XMc4

But in this example, the function 'getusername' probably doesn't work correct, because it hits the else only when $_COOKIE['user'] is empty. So, the parameter inside getusername() is also kind of empty.




回答2:


It is short hand php, for example:

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

Written out this means:

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

In your example, there is only an else statement.




回答3:


It's known as the ternary operator, similar to what's commonly called an inline if. For instance, the following two examples:

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

b)

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

Both of these will have the same effect. The statement before the question mark is evaluated to be either true or false, and then if true the statement before the colon is executed, and if false the statement after the colon is executed.

For more information you can check the section titled "Ternary Operator" on the following page of the PHP documentation:

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




回答4:


if $_COOKIE['user'] value is exist then NULL else getusername($_COOKIE['user'] will work

it's a ternary operator in php



来源:https://stackoverflow.com/questions/23752980/php-meaning-of-question-mark-colon-operator

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!