1PHP 是甚麼
重點
- PHP 是常用的伺服器端手稿程式語言,可用於產生動態網頁、處理表單及存取數據庫。
- 基本流程:伺服器端執行 → 產生 HTML → 回傳瀏覽器;瀏覽器不會直接執行 PHP 代碼。
- 瀏覽器收到的是「執行後的結果」(通常是 HTML),一般看不到原本的 PHP 代碼。
- 因此,若只用檔案總管直接開啟
.php檔,PHP 不會被執行,頁面亦不會得到預期輸出。
PHP 是一種用於網頁開發的伺服器端手稿程式語言。典型用途是:根據資料(例如數據庫資料、用戶輸入、登入狀態)動態產生 HTML,再回傳給瀏覽器顯示。
- 瀏覽器請求:用戶在瀏覽器輸入網址,向伺服器發出請求。
- 伺服器執行 PHP:伺服器讀取檔案,遇到
<?php ... ?>便執行程式。 - 產生輸出:PHP 透過輸出語句(例如
echo/print)把內容寫入回應,通常是 HTML 片段。 - 回傳結果:伺服器把「執行後的 HTML」回傳;瀏覽器再把 HTML 渲染為畫面。
這個流程解釋了兩件事:第一,PHP 檔案必須在伺服器環境下執行;第二,敏感邏輯(例如驗證密碼)通常應放在伺服器端。
瀏覽器最終只會看到輸出的 HTML(例如 <p>你好,Ada!</p>),而不會看到 PHP 代碼。
- 伺服器端:可存取數據庫與權限資料,適合處理敏感邏輯;缺點是每次互動需要與伺服器通訊。
- 客戶端:在瀏覽器內執行(例如 JavaScript),互動快;但不可完全信任其輸入結果,因此仍需伺服器端覆核。
- 以為瀏覽器可以直接執行 PHP:實際上 PHP 必須由伺服器端執行。
- 把機密資料或驗證邏輯放在客戶端:可能被查看或繞過。
- 把 PHP 檔案當作純 HTML 開啟:會看不到 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:同樣可輸出內容,但會回傳 1,因此可在較複雜的運算式中使用(入門階段毋須刻意使用)。
本章示例主要使用 echo,以降低語法負擔。
- 單引號:通常不處理跳脫序列(除非
\'與\\),亦不內插變量。 - 雙引號:支援常用跳脫序列與簡單變量內插,較適合輸出含變量的訊息。
\":在雙引號字串內輸出雙引號\\:輸出反斜線(例如路徑)\n:換行字符(注意:在 HTML 中通常需用<br>或nl2br()才能顯示換行)
- 忘記為字串內的雙引號跳脫,導致語法錯誤。
- 把反斜線路徑直接寫在字串內,忘記
\\。 - 誤以為
\n在 HTML 會自動換行。
字串與跳脫字符:寫對引號,才會輸出對內容
echo 與 print 的核心工作,是把內容輸出到回應之中。由於瀏覽器會把回應內容當作 HTML 解讀,所以最常見的做法是讓 PHP 輸出 HTML 片段,例如段落、清單或表格。
字串與跳脫字符是初學者最容易出錯的位置。你可先記住:若字串用雙引號包起來,字串內要輸出雙引號時,必須寫成 \";要輸出反斜線,必須寫成 \\。這些規則確保程式能分清楚「語法」與「字串內容」。
即時示範(模擬器)
示範:跳脫字符(\"、\\)
Check Point 2:輸出預測與跳脫字符(≥40 題)
以輸出預測題、跳脫字符辨識題為主。
3運算符與字串連接
重點
- 常用算術運算符:
+-*/%。 - 遞增/遞減:
++、--;組合指定運算符:+=、-=、.=等。 - 字串連接運算符是
.;.=會把串接結果寫回原本變量(重點)。 - 做輸出題時,建議先做「空運行」:逐行追蹤變量如何被更新,再判斷最後輸出。
變量用於儲存資料(以 $ 開頭,例如 $score)。運算符用於進行計算或組合資料,例如算術運算、字串連接等。
.:把兩段字串連接成新字串(不會自動更新原本變量)。.=:把右邊字串接到左邊變量後面,並把結果寫回該變量。
- 把字串連接誤寫成
+:PHP 應使用.。 - 忽略運算優先次序:輸出時建議加括號,例如
"Total: " . ($price*$qty)。 - 前置/後置遞增混淆:
$x++與++$x在輸出預測題常有不同結果。
運算優先次序與括號:令輸出更清晰
運算符是程式的「基本積木」。你可先以「讀取 → 計算 → 輸出」的思路學習:把資料存到變量,再用運算式計算,最後用輸出語句把結果呈現。當你把運算式放入輸出語句時,建議加上括號,令運算次序一目了然。
字串連接與輸出是網頁程式常見操作。只要記住:PHP 的字串連接用 .;要逐段組合一句句子,可用 .= 把片段接到變量後面。
即時示範(模擬器)
示範:計算 + 串接(含括號)
代碼小練習:交換兩個變量
請在下面練習中以 PHP 完成交換,並用「核對答案」檢查輸出是否正確。
小練習:交換 $a 與 $b
Check Point 3:空運行(運算符與字串連接)(≥40 題)
每題提供 3–5 行 PHP 程式碼;請判斷最終輸出(包括輸出的 HTML 內容)。
4條件判斷:if / else if / else
重點
if用於分支判斷;多重分支可用else if;最後可用else作預設情況。- 常用比較運算符:
==!=><>=<=。 - 常用邏輯運算符:
&&(AND)、||(OR)、!(NOT)。 - 寫條件時建議加括號,令判斷更清晰,例如:
if (($a >= 10) && ($a <= 20))。
比較運算符與邏輯運算符:寫出可讀的條件
if 語句的核心是「條件」。條件通常由比較運算符組成,例如「分數是否大於或等於 50」。當你需要同時檢查多個條件時,便要使用邏輯運算符把多個條件連接起來,例如「年齡達標,而且已持票」。
實務上,條件判斷常用於控制輸出內容:同一段 HTML 結構之中,某些內容只在特定情況下才輸出。這正是 PHP 動態產生網頁的基本技巧。
即時示範(模擬器)
示範:if / else if / 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最適合遍歷陣列:可逐個取得元素;關聯式陣列亦可同時取得鍵與值。
建立、讀取、修改與新增:把多筆資料放入同一個變量
陣列可用來儲存多筆資料。當資料量增加時,逐個變量處理會變得困難;使用陣列配合循環,可用同一套邏輯處理多筆資料,例如把成績清單輸出為 <ul>,或把資料輸出為 <table>。
索引陣列適合存放「順序性」資料;關聯式陣列適合存放「欄位名稱—欄位內容」形式的資料(例如 name、class)。實務上常會把關聯式陣列視為一筆記錄,再把多筆記錄放入更大的陣列中。
代碼小練習:count() 與 foreach
小練習:輸出陣列長度並遍歷元素
Check Point 5:陣列(索引與關聯式陣列)(≥40 題)
以索引/關聯 key、foreach 輸出預測題為主。
6循環:for / while / foreach
重點
- for:適合已知範圍或次數的循環(例如 1 至 10)。
- while:適合按條件停止的循環(例如直到資料讀完)。
- foreach:最適合遍歷陣列,不需手動處理索引;可同時取得鍵與值。
- 循環常與輸出結合,用來重複產生 HTML(例如清單項目
<li>、表格列<tr>)。
循環與陣列遍歷:把重複工作交給程式
循環讓程式可重複執行一段語句,常用於處理多筆資料及輸出。若資料存放於陣列中,foreach 通常是最直接的遍歷方式;若你需要使用索引(例如輸出序號或按索引讀取/修改),可改用 for 配合 count()。
把資料輸出成表格時,可先輸出表格骨架(<table>、表頭),再把「重複的列」交給循環輸出。這樣結構清晰,亦較容易除錯。
即時示範(模擬器)
示範:while 逐列輸出 table
代碼小練習:for/while/陣列遍歷(4 題)
以下以「一行一題」列出。展開題目後會載入模擬器;每題均提供:提示/核對答案/顯示參考答案/講解。
(正在載入練習…)
Check Point 6:循環(for / while / foreach)(≥40 題)
以循環次數、輸出預測、常見錯誤題為主。
✍️頁末代碼題(20 題 Coding)
每題提供:提示/核對答案/顯示參考答案/講解。請在模擬器中完成代碼,然後按「核對答案」檢查。
以下以「一行一題」列出。展開題目後會載入模擬器進行作答;每題均提供:提示/核對答案/顯示參考答案/講解。
(正在載入代碼題…)