三元運算子基本語法
$result = (條件) ? 真時值 : 假時值;
實際案例:預設值處理
// 傳統寫法
if (isset($_GET['time'])) {
$time = $_GET['time'];
} else {
$time = time();
}
// 三元運算子
$time = isset($_GET['time']) ? $_GET['time'] : time();
巢狀三元運算子(慎用)
$grade = ($score >= 90) ? 'A' : (($score >= 80) ? 'B' : (($score >= 60) ? 'C' : 'D'));
邏輯運算子短路特性簡化執行動作
// 傳統
if ($bool) {
setValueFun();
}
// 簡化:$bool 為真時才執行右側
$bool && setValueFun();
// 或:$bool 為假時執行右側
$bool || fallbackFun();
實用模式:Null 合併運算子(PHP 7+)
$time = $_GET['time'] ?? time(); // 等同 isset 檢查
最佳實踐建議
- 簡單單行賦值用三元運算子
- 複雜邏輯、多行敘述仍用
if/else 保持可讀性
- 避免過度巢狀三元,改用
switch 或查表陣列
- 邏輯運算子短路適用於「條件執行單一函式」場景