三元運算符的功能與“if....else”流程語句一致,它在一行中書寫,代碼精練、執行效率高。在PHP程序中恰當地使用三元運算符能夠讓腳本更為簡潔、高效。代碼的語法如下:
(expr1)?(expr2):(expr3); //表達式1?表達式2:表達式3
解釋:如果條件“expr1”成立,則執行語句“expr2”,否則執行“expr3”。
代碼如下 復制代碼<?PHP
$a=10; $b=20;
$c=$a>$b?($a-$b):($a+$b);
//說明:如果變量a大於變量b則執行問號後面的,否則就執行:冒號後面的
echo $c;
?>
表達式裡可以是函數、數組等等。
事實上,三元運算符可以擴展使用,當設置的條件成立或不成立,執行語句都可以不止一句,試看以下格式:
代碼如下 復制代碼(expr1) ? (expr2).(expr3) : (expr4).(expr5);
我們非常明顯地看到,多個執行語句可以使用用字符串運算符號(“.”)連接起來,各執行語句用小角括號包圍起來以表明它是一個獨立而完整的執行語句。這樣擴展後它的功能更為逼近“if...else”流程語句。
同時三元運算符還可以嵌套使用。例如,a大於b成立時:如果a小於c,那麼x=c-a否則x=a-c;否則a小於b成立時:如果b小於c,那麼x=c-b否則x=b-c:
$a>$b ? $x=($a<$c ? $c-$a : $a-$c) : $x=($b<$c ? $c-$b : $b-$c);
嵌套使用的三元運算符可讀性不太好,日後對代碼的維護極可能存在問題,所以像這種情況我們還是直接使用if else if 來實現吧。