5個小時學會 PHP

本節包括 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 搭配 breakdefault

  • 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];
$Array2 = [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





主頁 » PHP » 第2節 PHP 流程控制 與 PHP 函式 – 5個小時學會 PHP

One Comment

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *