本節包括 PHP 條件語句、迴圈以及函式,讓你能夠控制程式流程、重複執行任務,以及將程式碼模組化,提高程式的可讀性和重用性。
1. PHP 條件語句
1.1 if-else
條件判斷
當條件成立時執行指定的程式碼,不成立則執行其他程式碼。
範例程式碼
<?php
// 定義分數
$score = 75;
// 使用 if-else 判斷成績是否及格
if ($score >= 60) {
echo "成績:$score,結果:及格!<br>";
} else {
echo "成績:$score,結果:不及格!<br>";
}
?>
輸出結果:
成績:75,結果:及格!
1.2 if-elseif-else
條件判斷
當有多個條件需要判斷時,可以使用 if-elseif-else
。
範例程式碼
<?php
$score = 85;
// 使用 if-elseif-else 判斷成績等級
if ($score >= 90) {
echo "成績:$score,等級:A<br>";
} elseif ($score >= 80) {
echo "成績:$score,等級:B<br>";
} elseif ($score >= 70) {
echo "成績:$score,等級:C<br>";
} else {
echo "成績:$score,等級:D<br>";
}
?
輸出結果:
成績:85,等級:B
1.3 使用 switch-case
的最佳場合
- 當需要判斷多個固定選項時。
- 如果
if-elseif-else
的條件判斷過多,使用switch-case
會使程式碼更簡潔。
1. switch-case 基本語法
switch (變數或表達式) {
case 值1:
// 當變數等於值1時執行這裡的程式碼
break;
case 值2:
// 當變數等於值2時執行這裡的程式碼
break;
default:
// 當所有 case 都不符合時執行這裡的程式碼
}
2. switch-case 範例:成績等級判斷
假設分數被轉換成對應的等級 A
, B
, C
, D
,使用 switch-case
來判斷輸出不同的結果。
<?php
$grade = "B"; // 成績等級
// 使用 switch-case 判斷等級
switch ($grade) {
case "A":
echo "你的成績是 $grade,表現非常優秀!<br>";
break;
case "B":
echo "你的成績是 $grade,表現良好!<br>";
break;
case "C":
echo "你的成績是 $grade,還有進步空間!<br>";
break;
case "D":
echo "你的成績是 $grade,需要加油!<br>";
break;
default:
echo "成績等級無效!請輸入 A、B、C 或 D。<br>";
}
?>
輸出結果:
你的成績是 B,表現良好!
3. switch-case 範例:判斷星期幾
使用 date()
函數取得數字代表的星期幾,並利用 switch-case
來輸出對應的星期名稱。
<?php
// 使用 date() 函數取得星期幾(數字 1-7,1 代表星期一)
$dayOfWeek = date("N");
echo "今天是:";
switch ($dayOfWeek) {
case 1:
echo "星期一";
break;
case 2:
echo "星期二";
break;
case 3:
echo "星期三";
break;
case 4:
echo "星期四";
break;
case 5:
echo "星期五";
break;
case 6:
echo "星期六";
break;
case 7:
echo "星期日";
break;
default:
echo "無效的日期";
}
?>
輸出結果:
(假設今天是星期五)
今天是:星期五
4. switch-case 搭配 break
與 default
break
:終止當前case
區塊,避免程式繼續執行其他case
。default
:當所有case
都不匹配時執行,類似於else
。
範例:缺少 break 的情況
如果不加 break
,程式會繼續執行後續的 case。
<?php
$color = "紅色";
switch ($color) {
case "紅色":
echo "你選擇的是紅色!<br>";
case "藍色":
echo "你選擇的是藍色!<br>";
default:
echo "無法識別的顏色。<br>";
}
?>
輸出結果(錯誤範例):
你選擇的是紅色!
你選擇的是藍色!
無法識別的顏色。
1.4 三元運算子
三元運算子是 if-else
的簡寫,適合簡單的條件判斷。
語法:
條件 ? 真值結果 : 假值結果;
範例程式碼
<?php
$score = 75;
// 使用三元運算子判斷及格與否
$result = ($score >= 60) ? "及格" : "不及格";
echo "成績:$score,結果:$result";
?>
輸出結果:
成績:75,結果:及格
2. PHP 迴圈
2.1 for
迴圈
用於執行固定次數的重複操作。
語法:
for (初始化; 條件; 遞增/遞減) {
// 執行程式碼
}
範例程式碼
<?php
// 使用 for 迴圈印出 1 到 5
for ($i = 1; $i <= 5; $i++) {
echo "目前數字:$i<br>";
}
?>
輸出結果:
目前數字:1
目前數字:2
目前數字:3
目前數字:4
目前數字:5
2.2 while
迴圈
當條件成立時,會重複執行程式碼。
語法:
while (條件) {
// 執行程式碼
}
範例程式碼
<?php
$count = 1;
// 使用 while 迴圈印出 1 到 3
while ($count <= 3) {
echo "目前數值:$count<br>";
$count++;
}
?>
輸出結果:
目前數值:1
目前數值:2
目前數值:3
2.3 do-while
迴圈
do-while
迴圈至少會執行一次,因為條件判斷在執行完程式碼後才進行。
範例程式碼
<?php
$count = 1;
do {
echo "目前數值:$count<br>";
$count++;
} while ($count <= 3);
?>
輸出結果:
目前數值:1
目前數值:2
目前數值:3
2.4 foreach
迴圈(處理陣列)
foreach
專門用於遍歷陣列。
範例程式碼
<?php
$fruits = ["蘋果", "香蕉", "葡萄"];
// 使用 foreach 迴圈輸出陣列內容
foreach ($fruits as $fruit) {
echo "水果:$fruit<br>";
}
?>
輸出結果:
水果:蘋果
水果:香蕉
水果:葡萄
3. PHP 函式
3.1 定義與呼叫函式
語法:
function 函式名稱(參數) {
// 執行程式碼
return 結果;
}
範例程式碼
<?php
// 定義函式
function add($a, $b) {
return $a + $b;
}
// 呼叫函式
$result = add(10, 20);
echo "10 + 20 = $result";
?>
輸出結果:
10 + 20 = 30
3.2 參數傳遞(值傳遞與參考傳遞)
值傳遞(預設行為)
值傳遞時,函式中的參數不會影響原始變數。
<?php
function increment($num) {
$num++;
echo "函式內數值:$num<br>";
}
$value = 5;
increment($value);
echo "函式外數值:$value";
?>
輸出結果:
函式內數值:6
函式外數值:5
參考傳遞(加上 &
)
參考傳遞時,函式中的參數會影響原始變數。
<?php
function increment(&$num) {
$num++;
echo "函式內數值:$num<br>";
}
$value = 5;
increment($value);
echo "函式外數值:$value";
?>
輸出結果:
函式內數值:6
函式外數值:6
3.3 預設參數與可變參數
預設參數
<?php
function greet($name = "訪客") {
echo "你好,$name!<br>";
}
greet("LiEdward");
greet();
?>
輸出結果:
你好,LiEdward
!
你好,訪客!
可變參數
在 PHP 中,...
(三個點)有兩個主要用途,視使用場景而定:
接收多個參數並計算總和
<?php
function sum(...$numbers) {
return array_sum($numbers);
}
echo "總和:" . sum(1, 2, 3, 4, 5);
?>
輸出結果:
總和:15
用於陣列解構時,可以將一個陣列展開,並用於函式調用或其他陣列操作。
語法:
$Array1
= [1, 2, 3];
$Array
2 = [4, 5, ...$Array1]; // 解構並合併
範例:將陣列展開並合併
<?php
// 定義兩個陣列
$numbers1 = [1, 2, 3];
$numbers2 = [4, 5, ...$numbers1]; // 解構陣列並合併
// 輸出合併後的陣列
print_r($numbers2);
?>
輸出結果:
Array
(
[0] => 4
[1] => 5
[2] => 1
[3] => 2
[4] => 3
)
範例:將陣列展開並傳遞給函式
<?php
// 定義函式
function add($a, $b, $c) {
return $a + $b + $c;
}
$numbers = [1, 2, 3];
// 使用 ... 解構陣列並傳入函式
echo "總和是:" . add(...$numbers);
?>
輸出結果:
總和是:6