條件(三元)運算符 (?:)
條件運算符?: 接受三個操作數,是C# 中唯一的三元運算符。
視情況返回以下兩個表達式之一。
test ? expression1 : expression2
test 為 true 時返回的表達式expression1 。可能是逗點表達式。
test 為 false 時返回的表達式expression2 。可能是逗點表達式。
?: 運算符可以用作 if...else 語句的快捷方式。
條件運算符(三元運算符)效率問題
先來看這段代碼:
$name = GET('name') != null ? GET('name') : '';
function GET($key)
{
if (isset($_GET[$key]))
{
$fp = fopen('c.txt','a');
fwrite($fp, '1-');
fclose($fp);
return $_GET[$key];
}
return null;
}
運行後,發現c.txt文件中內容為 1-1-
顯然,GET函數執行了兩次。
以後還是以這種形式:
$name = GET('name');
$name = $name != null ? $name : '';
雖然代碼有些長,但效率相對會小點(如果調用的是個占用內存很大的函數,問題就很明顯了)
運算符優先級