php三元運(yùn)算符知識(shí)匯總
今天在改論文在線的時(shí)候遇到了一個(gè)語句看不懂:
$if_summary = $row['IF_SUMMARY']==2?'是':'否';
后來百度后發(fā)現(xiàn)是PHP的三元運(yùn)算符
這句話的意思就等于是
if($row['IF_SUMMARY']==2){ $if_summary="是"; }else{ $if_summary="否"; }
三元運(yùn)算符的功能與“if...else”流程語句一致,它在一行中書寫,代碼非常精練、執(zhí)行效率更高。
在PHP程序中恰當(dāng)?shù)厥褂萌\(yùn)算符能夠令腳本更為簡潔、高效。
代碼格式如下:(expr1) ? (expr2) : (expr3);
解釋:如果條件“expr1”成立,則執(zhí)行語句“expr2”,否則執(zhí)行“expr3”。
實(shí)現(xiàn)同樣的功能,若使用條件流程語句,就需要書寫多行代碼:
if(expr1) { expr2; } else { expr3; }
可見,前面所說的三元運(yùn)算符之好并非夸張。可是,多數(shù)情況下我們只在代碼較為簡單的時(shí)候使用三元運(yùn)算符,即執(zhí)行語句只為單句的時(shí)候。如:
$a>$b ? print "a大于b" : print "a小于b";
事實(shí)上,三元運(yùn)算符可以擴(kuò)展使用,當(dāng)設(shè)置的條件成立或不成立,執(zhí)行語句都可以不止一句,試看以下格式:
(expr1) ? (expr2).(expr3) : (expr4).(expr5);
我們非常明顯地看到,多個(gè)執(zhí)行語句可以使用用字符串運(yùn)算符號(hào)(“.”)連接起來,各執(zhí)行語句用小角括號(hào)包圍起來以表明它是一個(gè)獨(dú)立而完整的執(zhí)行語句。這樣擴(kuò)展后它的功能更為逼近“if...else”流程語句。
同時(shí)三元運(yùn)算符還可以嵌套使用。例如,a大于b成立時(shí):如果a小于c,那么x=c-a否則x=a-c;否則a小于b成立時(shí):如果b小于c,那么x=c-b否則x=b-c:
$a>$b ? $x=($a<$c ? $c-$a : $a-$c) : $x=($b<$c ? $c-$b : $b-$c);
嵌套使用的三元運(yùn)算符可讀性不太好,日后對(duì)代碼的維護(hù)極可能存在問題,但比起“if...else”之類的流程語句,在上述情形之下,它的確太簡練了,這是它的誘人之處。
對(duì)于喜歡偷懶和追求代碼簡潔的人來說,用三元運(yùn)算符取代if流程語句應(yīng)該是絕佳的選擇。即使不用考慮“三元”中條件句以外的任意某一“元”,使用三元運(yùn)算符仍然比if語句簡練。以下語句的語法是正確的,它們以小解引號(hào)的方式忽略了第二或第三“元”:
$a>$b ? print "Yes" : ""; $a>$b ? '': print 'No';
應(yīng)該注意的是:在使用三元運(yùn)算符時(shí),建議使用print語句替代echo語句。
注意下列一串語句的理解:
$str = $_GET['abc'] ? 'wangjinbo' : 'wjb';
這里不能理解為:當(dāng)$str等于$_GET['abc'] 時(shí),賦值為 'wangjinbo' 否則賦值為 'wjb';因?yàn)橐唬号袛嘞嗟葢?yīng)該用==;因原二:三元算符的語法是如上所示:(expr1) ? (expr2) : (expr3),顯然上面的二元,三元'wangjinbo'或'wjb'不能單獨(dú)構(gòu)成一個(gè)有意義的表達(dá)式;
正確理解是:當(dāng)$_GET['abc']為空(也就是否,PHP中 '',null,0,undifine,都等效布爾值false)時(shí),將$str賦值為'wangjinbo',否則賦值為'wjb';
以上所述就是本文的全部內(nèi)容了,希望大家能夠喜歡。
相關(guān)文章
PHP使用GD庫制作驗(yàn)證碼的方法(點(diǎn)擊驗(yàn)證碼或看不清會(huì)刷新驗(yàn)證碼)
這篇文章主要介紹了PHP使用GD庫制作驗(yàn)證碼的方法(點(diǎn)擊驗(yàn)證碼或看不清會(huì)刷新驗(yàn)證碼)的相關(guān)資料,需要的朋友可以參考下2017-08-08Thinkphp5框架實(shí)現(xiàn)獲取數(shù)據(jù)庫數(shù)據(jù)到視圖的方法
這篇文章主要介紹了Thinkphp5框架實(shí)現(xiàn)獲取數(shù)據(jù)庫數(shù)據(jù)到視圖的方法,涉及thinkPHP5數(shù)據(jù)庫配置、讀取、模型操作及視圖調(diào)用相關(guān)操作技巧,需要的朋友可以參考下2019-08-08php操作xml并將其插入數(shù)據(jù)庫的實(shí)現(xiàn)方法
下面小編就為大家?guī)硪黄猵hp操作xml并將其插入數(shù)據(jù)庫的實(shí)現(xiàn)方法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-09-09PHP和.net中des加解密的實(shí)現(xiàn)方法
PHP和.net中des加解密的實(shí)現(xiàn)方法,需要的朋友可以參考一下2013-02-02ThinkPHP框架中使用Memcached緩存數(shù)據(jù)的方法
這篇文章主要介紹了ThinkPHP框架中使用Memcached緩存數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了thinkPHP框架中Memcached緩存的設(shè)置與使用相關(guān)操作技巧,需要的朋友可以參考下2018-03-03THINKPHP3.2使用soap連接webservice的解決方法
這篇文章主要為大家詳細(xì)介紹了THINKPHP3.2使用soap連接webservice的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-12-12php使用file_get_contents(‘php://input‘)和$_POST的區(qū)別實(shí)例對(duì)比
這篇文章主要介紹了php使用file_get_contents(‘php://input‘)和$_POST的區(qū)別實(shí)例對(duì)比,這個(gè)知識(shí)點(diǎn)是比較常用的,有需要的可以參考下2021-03-03