首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 入門速成指南:從語法基礎到表單處理完整教學

     編輯:PHP 相關知識

PHP 核心概念與實戰技巧全方位指南

PHP 是專為 Web 開發設計的伺服器端腳本語言,擁有開放原始碼、跨平台、資料庫支援豐富等優勢。本文系統整理 PHP 核心語法、變數操作、陣列應用、流程控制與表單處理,助你快速建立開發實力。

為什麼選擇 PHP?

  • 低門檻:語法融合 C、Perl 風格,易學易用
  • 原生 Web 整合:直接嵌入 HTML,無需編譯
  • 資料庫王者:PDO/MySQLi/PostgreSQL/SQLite/ODBC 全支援
  • 生態豐富:Composer 套件管理、Laravel/Symfony 等現代框架
  • 效能優異:PHP 8+ 引入 JIT 編譯,效能大幅提升

基礎語法速查

標籤與輸出

<?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);

switch 多重選擇

<?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 "其他";
}

表單處理實戰

超全域變數 $_GET / $_POST

<!-- 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 "移動檔案失敗";
    }
}

最佳實踐總結

  1. 啟用嚴格模式:declare(strict_types=1); 強制型別檢查
  2. 錯誤報告:開發環境設定 error_reporting(E_ALL); ini_set('display_errors', 1);
  3. 資料過濾:輸入用 filter_var(),輸出用 htmlspecialchars()
  4. 資料庫安全:永遠使用 Prepared Statements (PDO::prepare)
  5. 依賴管理:使用 Composer 管理套件,遵循 PSR-4 自動載入
  6. 程式碼風格:遵循 PSR-12,使用 PHP_CodeSniffer 檢查

掌握這些核心概念後,建議進階學習:物件導向程式設計、Composer 套件開發、Laravel 框架實戰、API 設計、測試驅動開發(PHPUnit)、Docker 容器化部署等現代 PHP 開發技能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved