首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 入門教學:if / else / elseif 條件判斷完整指南

     編輯:PHP 相關知識

條件判斷是程式邏輯的基石。PHP 提供 if、else、elseif 構建分支邏輯,本文從語法、巢狀結構、常見陷阱到最佳實踐完整說明。

基本語法

<?php
if (條件表達式) {
    // 條件為 true 執行的程式碼區塊
} elseif (另一個條件) {
    // 前面條件皆 false,此條件為 true 時執行
} else {
    // 所有前面條件皆 false 時執行
}
?>

單行與多行區塊

單行語句可省略大括號 (不建議,易誤導):

<?php
if ($a > $b) echo "$a 大於 $b";
else echo "$a 不大於 $b";
?>

多行務必加大括號:

<?php
$d = date('D'); // 取得星期幾縮寫 Mon, Tue...

if ($d === 'Fri') {
    echo "週五快樂!
"; echo "週末即將來臨。
"; echo "別忘了備份代碼。"; } else { echo "今天是 $d,繼續加油!"; } ?>

elseif 多重條件判斷

<?php
$score = 85;

if ($score >= 90) {
    $grade = 'A';
} elseif ($score >= 80) {
    $grade = 'B';
} elseif ($score >= 70) {
    $grade = 'C';
} elseif ($score >= 60) {
    $grade = 'D';
} else {
    $grade = 'F';
}

echo "等級:$grade"; // 輸出 B
?>

執行順序: 由上而下,第一個符合條件的區塊執行後,整個結構結束,不再檢查後續條件。

條件表達式常用比較運算子

運算子名稱範例結果
==相等 (值)5 == "5"true
===全等 (值+型別)5 === "5"false
!= / <>不相等5 != 3true
!==不全等5 !== "5"true
<, >, <=, >=大小比較5 > 3true
&& / and邏輯 AND$a>0 && $b<10皆真為真
|| / or邏輯 OR$a==1 || $b==2任一真為真
!邏輯 NOT!$flag取反

常見陷阱與最佳實踐

1. 指派 (=) vs 比較 (== / ===)

<?php
// ❌ 錯誤:指派永遠回傳指派的值 (非 0 即 true)
if ($status = 'error') { ... }

// ✅ 正確:比較
if ($status === 'error') { ... }

// 防呆寫法:常數放左邊 (Yoda Condition)
if ('error' === $status) { ... } // 若誤寫 = 會報語法錯誤
?>

2. 空值與布林轉換

<?php
$var = 0;       // false
$var = '';      // false
$var = '0';     // false (字串 "0" 為 false!)
$var = [];      // false
$var = null;    // false
$var = false;   // false

// 建議明確比較
if ($var !== null && $var !== '' && $var !== false) { ... }
?>

3. 巢狀過深 → 提早返回

<?php
// ❌ 巢狀地獄
function checkUser($user) {
    if ($user) {
        if ($user->isActive()) {
            if ($user->hasPermission('admin')) {
                return true;
            }
        }
    }
    return false;
}

// ✅ Guard Clauses 提早返回
function checkUser($user) {
    if (!$user) return false;
    if (!$user->isActive()) return false;
    if (!$user->hasPermission('admin')) return false;
    return true;
}
?>

4. 三元運算子與 Null 合併運算子

<?php
// 三元運算子 ?: (簡單 if-else)
$status = $isLoggedIn ? '線上' : '離線';

// Null 合併運算子 ?? (PHP 7.0+) - 變數不存在或為 null 時給預設值
$name = $_GET['name'] ?? '訪客';

// 串聯 ??
$config = $userConfig ?? $siteConfig ?? $defaultConfig;
?>

進階:match 表達式

PHP 8.0+ 引入 match,比 switch 更嚴格 (嚴格比較 ===)、無 fall-through、可直接回傳值:

<?php
$grade = match (true) {
    $score >= 90 => 'A',
    $score >= 80 => 'B',
    $score >= 70 => 'C',
    $score >= 60 => 'D',
    default => 'F',
};
?>

練習題

  1. 撰寫程式判斷輸入年份是否為閏年 (能被 4 整除但不被 100 整除,或能被 400 整除)。
  2. 輸入分數 (0-100),輸出等第:90-100 優、80-89 良、70-79 可、60-69 及格、<60 不及格。
  3. 檢查變數 $input 是否為有效 Email 格式 (使用 filter_var),並輸出對應訊息。
條件判斷的核心是「清晰表達業務邏輯」。善用 Guard Clauses、嚴格比較 (===)、match 表達式,能寫出更健壯、可維護的代碼。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved