红穆笔记
首頁 語言筆記 PHP 三元運算符與if的詳解
語言筆記 PHP

PHP 三元運算符與if的詳解

PHP 三元运算符与if的详解

三元運算符語

條件 ? 結果1 : 結果2 

說明:問號前面的位置是判斷的條件,如果滿足條件時結果1,不滿足時結果2。
本文對三元運算符和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)表示沒有值。

微信赞赏

微信

支付宝赞赏

支付寶

✍️ 作者: 紅穆

網站管理員 · 感謝閱讀,更多精彩內容敬請關注

作者主頁 查看主頁 →

相關文章

PHP ob函数记录

PHP ob函數記錄 語言筆記 PHP

下面3個函數的用法 ob_get_contents(); ob_end_clean(); ob_start(); 可以藉助這幾個函數實現緩衝本地文件,以及執行本地腳本代碼。 使用ob_start()把輸出的代碼存到緩衝區,頁面不會顯示出來; 然後用ob_get_contents得到緩衝區的數據。 o…
👁 140
PHP preg

PHP preg 語言筆記 PHP

preg_match_all 函數用於執行一個全局正則表達式匹配。preg_match_all() 語法int preg_match_all ( string $pattern , string $subject [, array &amp;$matches [, int $flags = PREG…
👁 169
PHP强制转换类型

PHP強制轉換類型 語言筆記 PHP PHP採集 PHP與mysql

獲取數據類型1.如果想查看某個表達式的值和類型,用var_dump()。 2.如果只是想得到一個易讀懂的類型的表達方式用於調試,用 gettype()。3.要查看某個類型,不要用 gettype(),而用is_type() 函數。字符串轉換爲數值當一個字符串被當作數字來求值時,根據以下規則來決定結果…
👁 232
php 字符串中是否包含指定字符串的多种方法

php 字符串中是否包含指定字符串的多種方法 語言筆記 PHP

strstrstrstr() 函數搜索一個字符串在另一個字符串中的第一次出現。該函數返回字符串的其餘部分(從匹配點)。如果未找到所搜索的字符串,則返回 false。代碼如下:&lt;?php $email = 'user@example.com'; $domain = strstr($email, …
👁 138
typecho index.php首页模板制作常用代码

typecho index.php首頁模板製作常用代碼 語言筆記 PHP

模板的製作並非難事,只要你寫好了HTML和CSS,嵌套模板就非常簡單了,你無需瞭解標籤的內部結構,你只要會使用,模板就能迅速完成。這篇文章只簡單的介紹了常用標籤的使用方法,希望能帶你進入模板的世界。模板信息我們先從主文件說起,打開這個文件,首先看到的是註釋:/** * 這是typecho系統的一套默…
👁 269

推薦閱讀

资源网站typecho001模板

資源網站typecho001模板 程序筆記 Typecho

typecho001模板板本請勿修改本模板文件夾名稱 文件夾名稱爲:typecho001 1.4修復文章頁面js輸出問題1.3修復未安裝插件時的報錯提示優化列表頁代碼輸出1.2修復評論功能增加自定義首頁標題1.1修復評論回覆不對稱功能添加首頁單獨的標題設置功能增加網站favicon.ico圖標增加一…
👁 197
typecho分页样式的修改

typecho分頁樣式的修改 程序筆記 Typecho

大人,時代變了!目前typecho最完美的解決方案了,因爲百度只能看到固定思維的代碼。實際生成的html代碼,乾淨到讓人窒息完全的自定義,包括給li元素加上class,給a元素加上class,給上一頁下一頁加上class,去除typecho自帶用於表示更多的li標籤。甚至裏面的內容我也能添加一些文字…
👁 516
typecho文章页评论样式修改

typecho文章頁評論樣式修改 程序筆記 Typecho

需求使用 typecho 進行模板開發的時候,默認評論樣式很難看。因此需要評論需要重新輸出或進行樣式設定。默認的評論模板文件路徑是:comments.php主要使用的相關變量&lt;?php $comments-&gt;gravatar('40', ''); ?&gt; //頭像,有兩個參數,大小、…
👁 387
Typecho 对数据库的增删改查操作方法 API

Typecho 對數據庫的增刪改查操作方法 API 程序筆記 Typecho

Typecho數據庫提供了非常易用的api,和原生SQL寫法沒有太大的差別,同時也很好地處理了SQL常見的安全問題,如sql注入。本文從實用角度出發,介紹了typecho操作數據庫的常用場景以及相關api用法。表創建和刪除在Typecho插件開發過程中,往往需要創建自己的表。上文提到Typecho_…
👁 551
Typecho调用热门评论文章和调用最新文章的方法总结

Typecho調用熱門評論文章和調用最新文章的方法總結 程序筆記 Typecho

Typecho文章調用Typecho程序在設計主題的時候,側欄有些時候需要調用熱評文章或者最新文章。我們可以在指定的位置通過腳本直接調用。在這篇文章整理這個調用文章的方法,以後在有需要的模板中可以直接調用使用。其實設計主題就那麼回事,靜態模板搞定後,就是直接調用。最新文章調用 &lt;?php $t…
👁 295
Typecho 调用分类文章列表

Typecho 調用分類文章列表 程序筆記 Typecho

其中pageSize後面的數字表示調用文章的數量;mid後面的數字表示調用的分類ID;提示:Typecho分類目錄ID的獲取方法是把鼠標移到某分類名稱上面,在瀏覽器狀態欄顯示的mid=後面的數字便是該分類目錄ID編輯當前typecho主題模板,在要調用某分類目錄的位置添加以下代碼方法一:widget…
👁 360