':'和'?'的含义

时间:2010-11-02 21:40:54

标签: php operators

  

可能重复:
   the code “ : ” in php

我经常看到很多使用的PHP代码,但我实际上并不了解它的用途。这是一个例子:

$selected = ($key == $config['default_currency']) ? ' selected="selected"' : '';

请有人清理我吗? :)

5 个答案:

答案 0 :(得分:14)

这是三元运营商。它基本上是一行if / else。

例如,那些行:

if (!empty($_POST['value'])) {
    $value = $_POST['value'];
} else {
    $value = "";
}

可以通过以下行缩短:

$value = (!empty($_POST['value'])) ? $_POST['value'] : "";

如果您不滥用代码,可以使代码更容易阅读

答案 1 :(得分:6)

(condition ? val1 : val2)
如果val1为真,则

评估为condition;如果val2为假,则评估为condition


从PHP 5.3开始,您可能还会看到一个更加模糊的表单,遗漏了val1

(val0 ?: val2)
如果val0评估为非假值,则

评估为val0,否则评估为val2。糟糕!


请参阅http://php.net/manual/en/language.operators.comparison.php

答案 2 :(得分:2)

这是if语句的简写

您可以将该声明转换为:

if ($key == $config['default_currency']) {
    $selected = ' selected="selected"';
} else {
    $selected = '';
}

答案 3 :(得分:2)

这是ternary conditional operator,就像在C中一样。

您的代码相当于:

if ($key == $config['default_currency'])
{
   $selected = ' selected="selected"';
}
else
{
   $selected = '';
}

答案 4 :(得分:0)

在伪代码中,

variable = (condition) ? statement1 : statement2

映射到

if (condition is true)
then
variable = statement1
else
variable = statement2
end if