我經常看到使用大量的PHP代碼?和:,但我實際上並不明白它的用途。這裏的一個例子:
$selected = ($key == $config['default_currency']) ? ' selected="selected"' : '';
有人可以請我清理嗎? :)
我經常看到使用大量的PHP代碼?和:,但我實際上並不明白它的用途。這裏的一個例子:
$selected = ($key == $config['default_currency']) ? ' selected="selected"' : '';
有人可以請我清理嗎? :)
(condition ? val1 : val2)
評估爲val1
如果condition
是真實的,或者val2
如果condition
是假的。
自PHP 5.3中,你還可以看到一個更加模糊的形式離開了val1
:
(val0 ?: val2)
評估爲val0
如果val0
計算爲一個非假值,或val2
否則。哎呀!
這是三元運算符。它基本上是一條線上的if/else。
例如,那些線:
if (!empty($_POST['value'])) {
$value = $_POST['value'];
} else {
$value = "";
}
可以通過這條線被縮短:
$value = (!empty($_POST['value'])) ? $_POST['value'] : "";
它可以使代碼更易於閱讀,如果你不濫用它。
這是簡寫的if語句
你可以把這種說法變成這樣:
if ($key == $config['default_currency']) {
$selected = ' selected="selected"';
} else {
$selected = '';
}
這是ternary conditional operator,就像在C.
您的代碼相當於:
if ($key == $config['default_currency'])
{
$selected = ' selected="selected"';
}
else
{
$selected = '';
}
在僞代碼中,
variable = (condition) ? statement1 : statement2
映射到
if (condition is true)
then
variable = statement1
else
variable = statement2
end if
http://php.net/manual/language.operators.comparison.php#language.operators.comparison.ternary – poke 2010-11-02 21:45:53
*(相關)* [這個符號在PHP中的含義是什麼](http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Gordon 2010-11-27 00:41:37