本教學專為具備程式基礎但初次接觸 PHP 的開發者設計,著重於核心結構與實戰範例,不贅述基礎程式概念。建議讀者自行補充變數、判斷式等通用程式知識。
Windows 環境建議使用 AppServ 或 phpnow 等整合包,一鍵完成 Apache、PHP、MySQL 的安裝與配置。IIS 用戶可下載專用安裝程式快速啟用 PHP 支援。
<?php
// PHP 程式碼區塊
?>
最佳實務:僅使用標準 `` 標籤,避免使用短標籤 ` ?>`(需 `short_open_tag=On` 且不利移植)。
每條陳述式必須以分號 `;` 結尾,否則會拋出解析錯誤。
<?php
// 單行註解
# 亦可作單行註解(Shell 風格)
/*
多行註解區塊
適用於功能區塊說明、暫時停用大段程式碼
*/
?>
$ 開頭,區分大小寫($var ≠ $Var)snake_case($user_name)或 camelCase($userName)<?php
$var_name = "snow"; // 宣告並賦值字串
echo $var_name; // 輸出:snow
?>
使用 define() 函數,常數名慣用全大寫,不加 $ 符號。
<?php
// define(常數名, 常數值, 是否大小寫不敏感)
define("SITE_NAME", "我的網站", true); // true = 不區分大小寫
echo SITE_NAME; // 輸出:我的網站
echo site_name; // 亦可輸出(因第三參數為 true)
?>
參數說明:
PHP 陣列極為靈活,可同時作為索引陣列、關聯陣列、多維陣列使用,元素型別可混合。
<?php
// 短陣列語法 (PHP 5.4+)
$nums = [1, 2, 3];
// 傳統 array() 函數
$nums = array(1, 2, 3);
// 逐項賦值
$nums[0] = 1;
$nums[1] = 2;
$nums[2] = 4; // 覆蓋原值 3
echo $nums[2]; // 輸出:4
?>
<?php
$person = [
"name" => "張三",
"age" => 22,
"sex" => "man"
];
// 逐項賦值等價寫法
$person["name"] = "張三";
$person["age"] = 22;
$person["sex"] = "man";
echo "姓名:{$person['name']}
";
echo "年齡:{$person['age']}
";
echo "性別:{$person['sex']}
";
?>
<?php
$users = [
"張三" => [
"興趣" => "程式設計",
"年齡" => "23",
"性別" => "男"
],
"小紅" => [
"興趣" => "美食",
"性別" => "女"
]
];
// 存取深層值
echo $users["小紅"]["性別"]; // 輸出:女
// 動態新增/修改
$users["小紅"]["年齡"] = "20";
$users["李四"] = ["興趣" => "運動", "性別" => "男"];
?>
| 運算子 | 說明 | 範例 | 結果 |
|---|---|---|---|
| + | 加法 | $x=2; $x+2 | 4 |
| - | 減法 | $x=2; 5-$x | 3 |
| * | 乘法 | $x=4; $x*5 | 20 |
| / | 除法 | 15/5 | 3 |
| % | 取餘 | 5%2 | 1 |
| ++ | 遞增 | $x=5; $x++ | $x 變 6 |
| -- | 遞減 | $x=5; $x-- | $x 變 4 |
| 運算子 | 等價寫法 |
|---|---|
| += | $x += $y → $x = $x + $y |
| -= | $x -= $y → $x = $x - $y |
| *= | $x *= $y → $x = $x * $y |
| /= | $x /= $y → $x = $x / $y |
| .= | $x .= $y → $x = $x . $y (字串串接) |
| %= | $x %= $y → $x = $x % $y |
| 運算子 | 說明 | 範例 | 結果 |
|---|---|---|---|
| == | 值相等(型別轉換後) | 5 == "5" | true |
| === | 值與型別皆相等 | 5 === "5" | false |
| != / <> | 值不相等 | 5 != 8 | true |
| !== | 值或型別不相等 | 5 !== "5" | true |
| > / < / >= / <= | 大小比較 | 5 < 8 | true |
| 運算子 | 說明 | 範例 |
|---|---|---|
| && / and | 邏輯 AND | ($x < 10 && $y > 1) |
| || / or | 邏輯 OR | ($x == 5 || $y == 5) |
| ! | 邏輯 NOT | !($x == $y) |
<?php
$name = "張三";
if ($name == "張三") {
echo "張三";
} elseif ($name == "李四") {
echo "李四";
} else {
echo "其他";
}
// 輸出:張三
?>
注意:`elseif` 與 `else if` 效果相同,但 `elseif`(單字)效能略佳且為慣用寫法。
<?php
$num = 1;
switch ($num) {
case 1:
echo "一";
break; // 必須 break,否則會「貫穿」執行下一 case
case 2:
echo "二";
break;
default:
echo "其他";
}
// 輸出:一
?>
<?php
$i = 1;
while ($i <= 10) {
echo "第 {$i} 次
";
$i++;
}
// 輸出 1~10
?>
<?php
$i = 1;
do {
echo "第 {$i} 次
";
$i++;
} while ($i <= 1);
// 至少執行一次,輸出 1 次
?>
<?php
for ($i = 1; $i <= 3; $i++) {
echo "第 {$i} 次
";
}
// 輸出 1~3
?>
<?php
$arr = ["一", "二", "三"];
// 僅取值
foreach ($arr as $value) {
echo "值:{$value}
";
}
// 同時取鍵與值
foreach ($arr as $key => $value) {
echo "索引 {$key}:{$value}
";
}
?>
<?php
// 無參數、無回傳
function sayHello() {
echo "Hello, World!
";
}
// 有參數、有回傳
function add($a, $b) {
return $a + $b;
}
// 預設參數值
function greet($name = "訪客") {
echo "歡迎,{$name}!
";
}
// 呼叫
sayHello(); // Hello, World!
echo add(3, 5); // 8
greet(); // 歡迎,訪客!
greet("小明"); // 歡迎,小明!
?>
<?php
class MyClass {
// 屬性(成員變數)
private $num1;
private $num2;
public static $test = "靜態屬性測試";
// 方法(成員函數)
public function calc() {
return $this->num1 + $this->num2;
}
public function setNum($n1, $n2) {
$this->num1 = $n1;
$this->num2 = $n2;
return $this; // 回傳 $this 可串聯呼叫
}
// 靜態方法
public static function staticMethod() {
echo "
" . self::$test . "
";
}
}
// 實例化與使用
$obj = new MyClass();
echo $obj->setNum(2, 8)->calc(); // 輸出:10
// 靜態呼叫(無需實例化)
MyClass::staticMethod(); // 輸出:靜態屬性測試
?>
| 修飾詞 | 本類別 | 子類別 | 外部 |
|---|---|---|---|
| public | ✓ | ✓ | ✓ |
| protected | ✓ | ✓ | ✗ |
| private | ✓ | ✗ | ✗ |
$this->property:存取實例屬性/方法self::$staticProperty:存取靜態屬性ClassName::staticMethod():靜態呼叫:::範圍解析運算子$_GET:URL 參數(查詢字串)$_POST:POST 請求主體$_REQUEST:合併 `$_GET`、`$_POST`、`$_COOKIE`(不建議使用,安全性較低)<body>
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 簡單過濾輸出防 XSS
$name = htmlspecialchars($_POST['username'] ?? '', ENT_QUOTES, 'UTF-8');
echo "收到姓名:{$name}
";
}
?>
<form action="" method="post">
姓名:<input type="text" name="username" required>
<button type="submit">送出</button>
</form>
</body>
安全提醒:實務上務必對所有外部輸入進行驗證、過濾、轉義,防止 SQL 注入、XSS、CSRF 等攻擊。
本教學涵蓋 PHP 核心基礎:環境、語法、變數/常數、陣列、運算子、流程控制、迴圈、函數、OOP 基礎、表單處理。建議後續深入學習:
官方文件 PHP.net 手冊 是最權威、最完整的參考資源,善用它將事半功倍。