php的三元運算符


三元運算,即第一個表達式作為判斷條件,在后面兩個表達式中選擇一個執行。若判斷成立,則執行第二個表達式,否則執行第三個表達式。查資料時候,看到好多網友都說的不太全面或者不清不楚,所以這里整理並簡單記錄一波

整理如下

1. (expr1)?(expr2):(expr3);
=> 表達式1 ? 表達式2 : 表達式3
=> 如果條件“expr1”成立,則返回“expr2”,否則返回“expr3”。

$number = 100;
$msg = $number > 0 ? '大於0' : '不大於0';
echo $msg;//大於0

2. (expr1)?:(expr2);
=> 這個是php5.3開始才有的功能
=> 如果條件“expr1”成立,則返回“expr1”,否則“expr2”。

<?php
$number = 100;
$msg = $number ?: '不大於0';
echo $msg;//100

3. (expr1)??(expr2);
=> 這個是php7開始才有的功能
=> 又叫空合並運算符,相當於 isset(expr1) ? expr1 : expr2;
=> 如果條件“isset(expr1)”成立,則執行語句“expr1”,否則執行“expr2”。
=> 鏈式:(expr1)?? (expr2) ?? (expr3);

特別注意第3點

它只能判斷是否為null,而0/false/空數組都認為有值的!

<?php
// 一般形式
$msg1 = $number ?? '未設置該變量';
echo $msg1;//'未設置該變量'

$number = 100;
$msg2 = $number ?? '未設置該變量';
echo $msg2;//100

// 鏈式
$msg3 = $number1 ?? $number2 ?? '未設置該變量';
echo $msg3;//未設置該變量 //沒有賦值都是null,所以返回'未設置該變量'

$number1 = 100;//即使是0/false/空數組都認為有值的!
$msg3 = $number1 ?? $number2 ?? '未設置該變量';
echo $msg3;//100 //執行到第一步就得到結果,所以返回100


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM