php三元運算子與if的詳解

*文
發布: 2023-03-18 15:02:01
原創
29172 人瀏覽過

三元運算子語法:條件 ? 結果1 : 結果2 說明:問號前面的位置是判斷的條件,如果滿足條件時結果1,不滿足時結果2。

推薦手冊php完全自學手冊

#本文對三元運算子和if...else...進行對比詳解,希望對大家有幫助。

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

$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<$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']為空值(也就是否(false),PHP中' ',null,0,undifine,都等效布爾值false)這時$str賦值為'wjb' ,否則賦值為'wangjinbo';

註:

IF語句條件裡面沒有條件時,內容本身$_GET['abc'] 為真,條件成立, str賦值為'wangjinbo ' ,否則賦值為'wjb';沒有明確值為true時,真(true)表示有值,假(false)表示沒有值。

相關文章推薦:
1.PHP三元運算子:快還是不快?
2.PHP中三元運算子和Null合併運算子的簡單比較
# 3.php中常見的運算子有哪些         
相關影片推薦:
1.獨孤九賤(4)_PHP影片教學

以上是php三元運算子與if的詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!