国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > PHP > 正文

php中的三元運算符詳解

2024-05-04 23:07:18
字體:
來源:轉載
供稿:網友

三元運算符的功能與“if....else”流程語句一致,它在一行中書寫,代碼精練、執行效率高,在PHP程序中恰當地使用三元運算符能夠讓腳本更為簡潔、高效,代碼的語法如下:

(expr1)?(expr2):(expr3);

解釋:如果條件“expr1”成立,則執行語句“expr2”,否則執行“expr3”.實現同樣的功能,若使用條件流程語句,就需要書寫多行代碼:

  1. if(expr1){ 
  2. expr2; 
  3. }else
  4. 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語句簡練,以下的語法是正確的,它們以小解引號的方式忽略第二或第三“元”:

  1. $a>$b?print"YES":""
  2. $a>$b?"":print"No"

應該注意的是:在使用三元運算符時,建議使用print語句替換echo語句-----------經測試,php4環境下,在使用三元運算時若用echo語句打印內容,php會報錯.

三元運算符也可以用來賦值:

  1.  $a=2; 
  2.  $b=1; 
  3.  $str=($a>$b):'Yes':'No'
  4. echo $str
  5.  
  6. echo  
  7. $a == 1 ? 'one' :  
  8.  $a == 2 ? 'two' :   
  9.  $a == 3 ? 'three' :    
  10.  $a == 4 ? 'foura' : 'other'
  11. echo "n"

結果是:four

一開始想不明白,按照我的理解,應該是這樣的邏輯:

  1. echo ($a == 1 ? 'one' : 
  2.    ( $a == 2 ? 'two' : 
  3.    ( $a == 3 ? 'three' : 
  4.     ($a == 4 ? 'four' : 'other')))); 
  5. //輸出為:two 

后來在kevinG(qq:48474)的指教下,參看php手冊,終于明白了php的三元符的解釋是從左到右的.

  1. <?php 
  2. // 乍看起來下面的輸出是 'true' 
  3. echo (true?'true':false?'t':'f'); 
  4. // 然而,上面語句的實際輸出是't',因為三元運算符是從左往右計算的 
  5. // 下面是與上面等價的語句,但更清晰 
  6. echo ((true ? 'true' : 'false') ? 't' : 'f'); 
  7. ?> 

所以上面的可以這樣解釋:

  1. echo ( 
  2.  ((($a == 1 ? 'one' :  
  3. $a == 2) ? 'two' :   
  4. $a == 3 )? 'three' :    
  5. $a == 4 )? 'four' : 'other'); 

其實這個涉及到類型轉換:

$a==1=>false=>$a==2?true=>'two'=true=>'three'=true=>'four'

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永平县| 甘肃省| 府谷县| 龙口市| 寿阳县| 灵宝市| 独山县| 汕尾市| 九江县| 曲松县| 溧水县| 寿宁县| 定南县| 高州市| 格尔木市| 无极县| 铁力市| 平定县| 竹北市| 察隅县| 昌乐县| 永善县| 龙游县| 增城市| 万全县| 水富县| 革吉县| 赤水市| 同德县| 晋城| 周至县| 津南区| 阜新市| 漳浦县| 衡南县| 怀来县| 通州市| 黑河市| 长沙县| 大新县| 龙里县|