PHP的三元運算子

來源:互聯網
上載者:User
本篇文章主要介紹PHP的三元運算子,感興趣的朋友參考下,希望對大家有所協助。

三元運算子文法:條件 ? 結果1 : 結果2說明:問號前面的位置是判斷的條件,如果滿足條件時結果1,不滿足時結果2。下面我們來詳細探討下。

今天在改論文線上的時候遇到了一個語句看不懂:

$if_summary = $row['IF_SUMMARY']==2?'是':'否';

這句話的意思就等於是

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<$c ? $c-$a : $a-$c) : $x=($b<$c ? $c-$b : $b-$c);

嵌套使用的三元運算子可讀性不太好,日後對代碼的維護極可能存在問題,但比起“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';

總結:以上就是本篇文的全部內容,希望能對大家的學習有所協助。

相關推薦:

php類比post請求的三種常見用法

php針對檔案操作及字串加密的方法

php針對數組的刪除、轉換、分組、排序

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.