今天在改論文在線的時候遇到了一個語句看不懂:
$if_summary = $row['IF_SUMMARY']==2?'是':'否';
後來百度後發現是PHP的三元運算符
這句話的意思就等於是
if($row['IF_SUMMARY']==2){
$if_summary="是";
}else{
$if_summary="否";
}
三元運算子的功能與「if...else」流程語句一致,它在一行中書寫,程式碼非常精練、執行效率更高。
在PHP程式中適當地使用三元運算子能夠令腳本更為簡潔、有效率。
代碼格式如下:(expr1) ? (expr2) : (expr3);
解釋:如果條件“expr1”成立,則執行語句“expr2”,否則執行“expr3”。
實現同樣的功能,若使用條件流程語句,就需要書寫多行程式碼:
if(expr1) {
expr2;
} else {
expr3;
}
可見,前面所說的三元運算子之好並非誇張。可是,多數情況下我們只在程式碼較簡單的時候使用三元運算符,也就是執行語句只為單句的時候。如:
$a>$b ? print "a大於b" : print "a小於b";
事實上,三元運算子可以擴展使用,當設定的條件成立或不成立,執行語句都可以不止一句,試看以下格式:
(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巢狀使用的三元運算子可讀性不太好,日後對程式碼的維護極可能有問題,但比起「if...else」之類的流程語句,在上述情形之下,它的確太簡練了,這是它的誘人之處。
對於喜歡偷懶、追求程式碼簡潔的人來說,用三元運算子取代if流程語句應該是絕佳的選擇。即使不用考慮“三元”中條件句以外的任某一“元”,使用三元運算子仍然比if語句簡練。以下語句的語法是正確的,它們以小解引號的方式忽略了第二或第三「元」:
$a>$b ? print "Yes" : "";
$a>$b ? '' : print 'No';
應該注意的是:在使用三元運算子時,建議使用print語句來取代echo語句。
注意下列一串語句的理解:
$str = $_GET['abc'] ? 'wangjinbo' : 'wjb';
這裡不能理解為:當$str等於$_GET['abc'] 時,賦值為'wangjinbo' 否則賦值為 'wjb';因為一:判斷相等應該用==;因原二:三元算子的語法是如上所示:(expr1) ? (expr2) : (expr3),顯然上面的二元,三元'wangjinbo'或'wjb'不能單獨構成一個有意義的表達式;
正確理解是:當$_GET['abc']為空(也就是否,PHP中'',null,0, undifine,都等效布林值false)時,將$str賦值為'wangjinbo',否則賦值為'wjb';
原文連結:bbs.php100.com/read-htm-tid-24239.html
以上就介紹了php三元運算子詳解,包括了方面的內容,希望對PHP教程有興趣的朋友有幫助。