PHP 是專為 Web 開發設計的伺服器端腳本語言,擁有開放原始碼、跨平台、資料庫支援豐富等優勢。本文系統整理 PHP 核心語法、變數操作、陣列應用、流程控制與表單處理,助你快速建立開發實力。
<?php
// 標準標籤(推薦)
echo "Hello, World!";
// 短標籤(需啟用 short_open_tag)
?>Hello, World!<?php
// 輸出變數
$name = "PHP";
echo "學習 $name 很有趣!"; // 雙引號解析變數
echo '學習 $name 很有趣!'; // 單引號不解析
$ 開頭,區分大小寫($var ≠ $Var)| 類別 | 運算子 | 範例 |
|---|---|---|
| 算術 | + - * / % ** | $a ** $b (冪次) |
| 字串串接 | . | "Hello " . "World" |
| 指派 | = += -= *= /= .= | $a += 5 |
| 比較 | == === != !== < > <= >= <=> | $a === $b (型別+值) |
| 邏輯 | && || ! and or xor | $a && $b |
<?php
// 索引陣列
$fruits = ['apple', 'banana', 'orange'];
$fruits[] = 'grape'; // 自動附加
// 關聯陣列
$person = [
'name' => 'Alice',
'age' => 28,
'skills' => ['PHP', 'JS', 'SQL']
];
// 多維陣列
$users = [
'alice' => ['role' => 'admin', 'active' => true],
'bob' => ['role' => 'user', 'active' => false]
];
// array() 舊語法(相容 PHP 5.4 前)
$colors = array('red', 'green', 'blue');
<?php
$arr = [3, 1, 4, 1, 5];
count($arr); // 5 - 元素個數
array_push($arr, 9); // 尾部新增
array_pop($arr); // 移除尾部
array_shift($arr); // 移除首部
array_unshift($arr, 0); // 首部新增
in_array(3, $arr); // true - 檢查值是否存在
array_keys($arr); // 取得所有鍵名
array_values($arr); // 重新索引取得值
array_merge($a, $b); // 合併陣列
array_unique($arr); // 去除重複值
<?php
$data = ['a' => 1, 'b' => 2, 'c' => 3];
// 1. foreach(推薦:簡潔、效能佳)
foreach ($data as $key => $value) {
echo "$key => $value\n";
}
// 2. while + each/list(舊式,不推薦)
reset($data);
while (list($key, $value) = each($data)) {
echo "$key => $value\n";
}
// 3. for 迴圈(需索引陣列)
$keys = array_keys($data);
for ($i = 0; $i < count($keys); $i++) {
echo "$keys[$i] => $data[$keys[$i]]\n";
}
<?php
$score = 85;
if ($score >= 90) {
echo "優等";
} elseif ($score >= 60) {
echo "及格";
} else {
echo "不及格";
}
// 三元運算子
$status = ($score >= 60) ? "通過" : "不通過";
// null 合併運算子 (PHP 7+)
$name = $_GET['name'] ?? '訪客';
<?php
// for 迴圈
for ($i = 1; $i <= 10; $i++) {
if ($i === 5) continue; // 跳過 5
if ($i === 8) break; // 8 結束
echo $i . " ";
}
// while 迴圈
$i = 1;
while ($i <= 10) {
echo $i++ . " ";
}
// do-while(至少執行一次)
do {
echo "至少一次\n";
} while (false);
<?php
$day = date('N'); // 1-7
match ($day) { // PHP 8+ match 表達式
1, 2, 3, 4, 5 => echo "工作日",
6, 7 => echo "週末",
default => echo "異常"
};
// 傳統 switch
switch ($day) {
case 1: echo "週一"; break;
case 2: echo "週二"; break;
// ...
default: echo "其他";
}
<!-- HTML 表單 -->
<form method="post" action="process.php">
姓名: <input type="text" name="username" required>
信箱: <input type="email" name="email" required>
<button type="submit">送出</button>
</form>
<?php
// process.php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// 取得並過濾輸入
$username = trim($_POST['username'] ?? '');
$email = filter_var($_POST['email'] ?? '', FILTER_VALIDATE_EMAIL);
// 驗證
$errors = [];
if (empty($username)) $errors[] = "姓名不可為空";
if (!$email) $errors[] = "Email 格式錯誤";
if (empty($errors)) {
// 處理業務邏輯...
echo "感謝 $username 提交!";
} else {
foreach ($errors as $e) echo "$e
";
}
}
<?php
if (isset($_FILES['avatar'])) {
$file = $_FILES['avatar'];
// 驗證錯誤代碼
if ($file['error'] !== UPLOAD_ERR_OK) {
die("上傳失敗,錯誤代碼: {$file['error']}");
}
// 驗證檔案型別(防止偽裝)
$finfo = finfo_open(FILEINFO_MIME_TYPE);
$mime = finfo_file($finfo, $file['tmp_name']);
$allowed = ['image/jpeg', 'image/png', 'image/gif'];
if (!in_array($mime, $allowed)) {
die("只允許 JPG/PNG/GIF 格式");
}
// 產生安全檔名
$ext = pathinfo($file['name'], PATHINFO_EXTENSION);
$newName = bin2hex(random_bytes(16)) . ".$ext";
$dest = "/var/www/uploads/$newName";
if (move_uploaded_file($file['tmp_name'], $dest)) {
echo "上傳成功:$newName";
} else {
echo "移動檔案失敗";
}
}
declare(strict_types=1); 強制型別檢查error_reporting(E_ALL); ini_set('display_errors', 1);filter_var(),輸出用 htmlspecialchars()掌握這些核心概念後,建議進階學習:物件導向程式設計、Composer 套件開發、Laravel 框架實戰、API 設計、測試驅動開發(PHPUnit)、Docker 容器化部署等現代 PHP 開發技能。