':'和'?'的含义

Dug*_*ugi 0 php operators

可能重复:
php中的代码":"

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

$selected = ($key == $config['default_currency']) ? ' selected="selected"' : '';
Run Code Online (Sandbox Code Playgroud)

有人能把我弄清楚吗?:)

Vin*_*ard 14

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

例如,那些行:

if (!empty($_POST['value'])) {
    $value = $_POST['value'];
} else {
    $value = "";
}
Run Code Online (Sandbox Code Playgroud)

可以通过这条线缩短:

$value = (!empty($_POST['value'])) ? $_POST['value'] : "";
Run Code Online (Sandbox Code Playgroud)

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


Alc*_*ive 6

(condition ? val1 : val2)
Run Code Online (Sandbox Code Playgroud)

求值val1if condition为true,或val2if condition为false.


从PHP 5.3开始,您可能还会看到一个更加模糊的形式val1:

(val0 ?: val2)
Run Code Online (Sandbox Code Playgroud)

计算结果val0是否val0计算为非假值或val2其他值.哎呀!


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