選修單元 B EBCH2:PHP 基礎

本章介紹 PHP 的核心語法:由伺服器端執行流程、輸出語句(echo / print)、字串與跳脫字符, 到運算符、條件判斷、陣列及循環。 你將學習如何用 PHP 動態產生 HTML,並以循環把資料輸出成清單或表格。

1PHP 是甚麼

重點

  • PHP 是常用的伺服器端手稿程式語言,可用於產生動態網頁、處理表單及存取數據庫。
  • 基本流程:伺服器端執行 → 產生 HTML → 回傳瀏覽器;瀏覽器不會直接執行 PHP 代碼。
  • 瀏覽器收到的是「執行後的結果」(通常是 HTML),一般看不到原本的 PHP 代碼。
  • 因此,若只用檔案總管直接開啟 .php 檔,PHP 不會被執行,頁面亦不會得到預期輸出。

用途與學習原因:為何需要伺服器端程式

若只使用超文本標示語言(HTML)及 CSS,頁面內容大多是固定的:不同用戶看到的內容差異不大。PHP 的價值在於「按情況產生內容」:例如根據數據庫讀取資料列出名單、根據用戶輸入顯示搜尋結果、根據登入狀態顯示不同功能等。

當你在瀏覽器輸入網址,實際上是向伺服器提出請求;伺服器收到請求後,會先執行 PHP,然後把輸出的 HTML 回傳。這表示:PHP 的執行環境不在瀏覽器,而在伺服器,因此更適合處理敏感資料與系統規則。

學習時,你可把 PHP 視為「會輸出 HTML 的程式」。只要掌握輸出、條件與循環,你已能產生大量結構化內容(例如清單、表格),為之後處理表單及數據庫建立基礎。

即時示範(模擬器)

示範:PHP 先執行,再回傳 HTML

請嘗試修改 echo 的內容,觀察輸出結果的變化。

Check Point 1:PHP 與伺服器端執行流程(≥40 題)

以概念理解題為主:伺服器端、輸出結果是甚麼、為何不能直接開啟 php 檔等。

2輸出語句與跳脫字符

重點

  • PHP 語句一般以分號 ; 結束;代碼一般寫在 <?php 與 ?> 之間。
  • echo 與 print 都可輸出內容:入門階段可先以 echo 為主。
  • 字串可用單引號或雙引號:雙引號支援變量內插及常用跳脫序列。
  • 跳脫字符(反斜線 \)用於輸出特殊符號,例如 \n、\"、\\;常見錯誤是引號不配對或忘記跳脫。

字串與跳脫字符:寫對引號,才會輸出對內容

echo 與 print 的核心工作,是把內容輸出到回應之中。由於瀏覽器會把回應內容當作 HTML 解讀,所以最常見的做法是讓 PHP 輸出 HTML 片段,例如段落、清單或表格。

字串與跳脫字符是初學者最容易出錯的位置。你可先記住:若字串用雙引號包起來,字串內要輸出雙引號時,必須寫成 \";要輸出反斜線,必須寫成 \\。這些規則確保程式能分清楚「語法」與「字串內容」。

即時示範(模擬器)

示範:跳脫字符(\"、\\)

Check Point 2:輸出預測與跳脫字符(≥40 題)

以輸出預測題、跳脫字符辨識題為主。

3運算符與字串連接

重點

  • 常用算術運算符:+ - * / %。
  • 遞增/遞減:++、--;組合指定運算符:+=、-=、.= 等。
  • 字串連接運算符是 .;.= 會把串接結果寫回原本變量(重點)。
  • 做輸出題時,建議先做「空運行」:逐行追蹤變量如何被更新,再判斷最後輸出。

運算優先次序與括號:令輸出更清晰

運算符是程式的「基本積木」。你可先以「讀取 → 計算 → 輸出」的思路學習:把資料存到變量,再用運算式計算,最後用輸出語句把結果呈現。當你把運算式放入輸出語句時,建議加上括號,令運算次序一目了然。

字串連接與輸出是網頁程式常見操作。只要記住:PHP 的字串連接用 .;要逐段組合一句句子,可用 .= 把片段接到變量後面。

即時示範(模擬器)

示範:計算 + 串接(含括號)

代碼小練習:交換兩個變量

請在下面練習中以 PHP 完成交換,並用「核對答案」檢查輸出是否正確。

小練習:交換 $a 與 $b

Check Point 3:空運行(運算符與字串連接)(≥40 題)

每題提供 3–5 行 PHP 程式碼;請判斷最終輸出(包括輸出的 HTML 內容)。

4條件判斷:if / elseif / else

重點

  • if 用於分支判斷;多重分支可用 elseif;最後可用 else 作預設情況。
  • 常用比較運算符:== != > < >= <=。
  • 常用邏輯運算符:&&(AND)、||(OR)、!(NOT)。
  • 寫條件時建議加括號,令判斷更清晰,例如:if (($a >= 10) && ($a <= 20))。

互斥判斷與條件次序

if / elseif / else 最適合處理互相排斥的分類,例如把同一個分數分成不同等第。程式會依照源碼次序檢查條件,因此同一組條件即使內容相同,只要排列不同,也可能得到不同結果。閱讀程式時,應逐項寫出條件的真假,並在第一個成立條件出現時停止。

條件由具體至一般排列,可避免較寬鬆的條件過早攔截數據。以分數為例,$score >= 60 同時涵蓋 60、80 及 95;若它放在最前面,後面的 80 分與 90 分分支便沒有機會執行。最後的 else 可處理所有尚未被涵蓋的情況,使分支鏈完整。

比較運算符用來產生布爾結果,邏輯運算符則可把多個比較組合起來。編寫條件時,應先確認每個比較的左右兩邊、括號與花括號是否完整,再檢查是否把 = 誤寫為比較。清楚的縮排亦有助辨認每個分支的範圍。

即時示範(模擬器)

示範:if / elseif / else(按分數輸出等第)

你可嘗試修改 $score,觀察等第輸出如何改變。

代碼小練習:自行撰寫 if 語句

以下小練習要求同時使用比較運算符與邏輯運算符。

小練習:年齡 + 持票(AND 條件)

Check Point 4:條件判斷(if / else if / else)(≥40 題)

以流程判斷、輸出預測、填空/除錯題為主。

5陣列:索引與關聯式陣列

重點

  • 索引陣列:以 0,1,2… 作索引,例如 $arr = [10, 20, 30];
  • 關聯式陣列:以字串作鍵(key),例如 $user = ["name"=>"Ada", "age"=>18];
  • 常用操作:讀取、修改、新增($arr[] = ...),以及用函數 count() 取得元素數量。
  • foreach 最適合遍歷陣列:可逐個取得元素;關聯式陣列亦可同時取得鍵與值。

以鍵組織多筆相關數據

單一變量適合保存一項數據;當程式需要處理一組分數、一批產品或一筆包含多個欄的用戶紀錄時,陣列能把相關值集中管理。索引陣列強調位置與次序,關聯式陣列則強調鍵名所代表的意義,因此選擇哪一種形式取決於程式日後如何讀取數據。

陣列的讀取、修改與新增都以鍵為基礎。對索引陣列而言,鍵通常是由 0 開始的整數;對關聯式陣列而言,鍵名的大小寫與拼法必須一致。修改現有鍵會取代原值,而向新鍵賦值則會建立新元素。

當同一項操作需要套用到每個元素時,應使用循環遍歷,而不是逐項重複書寫源碼。foreach 適合直接取得每個值;若需要位置、序號或按索引修改元素,可使用 for 配合 count(),並留意索引上限是元素數量減一。

代碼小練習:count() 與 foreach

小練習:輸出陣列長度並遍歷元素

Check Point 5:陣列(索引與關聯式陣列)(≥40 題)

以索引/關聯 key、foreach 輸出預測題為主。

6循環:for / while / foreach

重點

  • for:適合已知範圍或次數的循環(例如 1 至 10)。
  • while:適合按條件停止的循環(例如直到數據讀完)。
  • foreach:最適合遍歷陣列,不需手動處理索引;可同時取得鍵與值。
  • 循環常與輸出結合,用來重複產生 HTML(例如清單項目 <li>、表格列 <tr>)。

按次數、條件或數據集合選擇循環

三種循環都能重複執行語句,但各自表達不同的控制方式。當題目已給定次數或明確的數值範圍時,for 能把起點、繼續條件與更新集中顯示;當停止時機取決於執行期間才知道的狀態時,while 通常較自然。

對陣列進行逐項處理時,foreach 可直接取得每個元素,毋須自行計算索引上限。若工作同時需要索引,例如輸出序號、比較相鄰元素或按位置修改內容,便可使用 for 配合 count()。選擇循環時,應先問「次數是否已知」以及「是否只需逐項取得陣列元素」。

追蹤循環時,可建立表格記錄每次開始時的控制變量、條件結果、輸出及更新後數值。這種方法能快速找出 off-by-one 錯誤。對 while 而言,還要確認循環主體必定有機會令條件變為不成立,否則程式可能一直執行。

即時示範(模擬器)

示範:while 逐列輸出 table

代碼小練習:for/while/陣列遍歷(4 題)

以下以「一行一題」列出。展開題目後會載入模擬器;每題均提供:提示/核對答案/顯示參考答案/講解。

(正在載入練習…)

Check Point 6:循環(for / while / foreach)(≥40 題)

以循環次數、輸出預測、常見錯誤題為主。

✍️頁末代碼題(20 題 Coding)

每題提供:提示/核對答案/顯示參考答案/講解。請在模擬器中完成代碼,然後按「核對答案」檢查。

以下以「一行一題」列出。展開題目後會載入模擬器進行作答;每題均提供:提示/核對答案/顯示參考答案/講解。

(正在載入代碼題…)

總結 課文腦圖總結

重點:

  • PHP 在伺服器端執行;瀏覽器收到及顯示的是執行後的 HTML,而不是 PHP 源碼。
  • 變量及運算建立數據流,條件決定輸出分支,陣列保存多筆數據,循環重複產生清單或表格結構。
  • 字串題要分清單引號、雙引號、變量內插、跳脫字符,以及 PHP 的字串連接運算符「.」。
  • 空運行時逐行更新變量,特別留意前置/後置遞增、組合賦值、條件邊界、陣列索引及循環停止。

本腦圖把全課重整為「請求—回應、程式與輸出、字串、數據運算、條件、陣列、循環、整合排錯」八個互相連結的概念分支。

陣列與循環不再視為兩個獨立語法表:索引或鍵保存多筆數據,for/foreach 再把相同邏輯套用到每筆數據,最後輸出清單項目或表格列。

程式碼節點同時標示變量角色、執行次序及常見錯誤,方便學生由輸出反推數據如何逐步更新。