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

PHP 基礎入門教學:從環境搭建到核心語法完整指南

     編輯:PHP 綜合知識

前言

本教學專為具備程式基礎但初次接觸 PHP 的開發者設計,著重於核心結構與實戰範例,不贅述基礎程式概念。建議讀者自行補充變數、判斷式等通用程式知識。

一、PHP 開發環境搭建

常見組合架構

  • LAMP:Linux + Apache + MySQL + PHP(生產環境首選)
  • WAMP:Windows + Apache + MySQL + PHP
  • WIMP:Windows + IIS + MySQL/SQL Server + PHP

新手推荐:整合安裝包

Windows 環境建議使用 AppServ 或 phpnow 等整合包,一鍵完成 Apache、PHP、MySQL 的安裝與配置。IIS 用戶可下載專用安裝程式快速啟用 PHP 支援。

官方下載來源

開發工具建議

  • Notepad++:輕量、免費、支援語法高亮
  • PhpStorm / VS Code:專業 IDE,具備智能提示、除錯、版控整合

二、PHP 基本語法規則

標籤宣告

<?php
// PHP 程式碼區塊
?>

最佳實務:僅使用標準 `` 標籤,避免使用短標籤 ``(需 `short_open_tag=On` 且不利移植)。

語句結束符

每條陳述式必須以分號 `;` 結尾,否則會拋出解析錯誤。

註解寫法

<?php
// 單行註解
# 亦可作單行註解(Shell 風格)

/*
  多行註解區塊
  適用於功能區塊說明、暫時停用大段程式碼
*/
?>

三、變數與常數

變數特性

  • 以 $ 開頭,區分大小寫($var ≠ $Var)
  • 無需預先宣告型別,PHP 依賦值自動推斷
  • 命名規則:字母或底線開頭,僅含字母數字底線,不可含空格
  • 慣例:多單詞採用 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)
?>

參數說明:

  1. 常數名稱(不可為關鍵字、不可含 $)
  2. 常數值(僅限布林、整數、浮點數、字串)
  3. 大小寫敏感性(預設 false 區分大小寫)

四、陣列操作大全

PHP 陣列極為靈活,可同時作為索引陣列、關聯陣列、多維陣列使用,元素型別可混合。

1. 索引陣列(數值索引)

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

2. 關聯陣列(鍵值對)

<?php
$person = [
    "name" => "張三",
    "age"  => 22,
    "sex"  => "man"
];

// 逐項賦值等價寫法
$person["name"] = "張三";
$person["age"]  = 22;
$person["sex"]  = "man";

echo "姓名:{$person['name']}
"; echo "年齡:{$person['age']}
"; echo "性別:{$person['sex']}
"; ?>

3. 多維陣列(巢狀結構)

<?php
$users = [
    "張三" => [
        "興趣" => "程式設計",
        "年齡" => "23",
        "性別" => "男"
    ],
    "小紅" => [
        "興趣" => "美食",
        "性別" => "女"
    ]
];

// 存取深層值
echo $users["小紅"]["性別"]; // 輸出:女

// 動態新增/修改
$users["小紅"]["年齡"] = "20";
$users["李四"] = ["興趣" => "運動", "性別" => "男"];
?>

五、運算子速查表

算術運算子

運算子說明範例結果
+加法$x=2; $x+24
-減法$x=2; 5-$x3
*乘法$x=4; $x*520
/除法15/53
%取餘5%21
++遞增$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 != 8true
!==值或型別不相等5 !== "5"true
> / < / >= / <=大小比較5 < 8true

邏輯運算子

運算子說明範例
&& / and邏輯 AND($x < 10 && $y > 1)
|| / or邏輯 OR($x == 5 || $y == 5)
!邏輯 NOT!($x == $y)

六、流程控制結構

if / else / elseif

<?php
$name = "張三";

if ($name == "張三") {
    echo "張三";
} elseif ($name == "李四") {
    echo "李四";
} else {
    echo "其他";
}
// 輸出:張三
?>

注意:`elseif` 與 `else if` 效果相同,但 `elseif`(單字)效能略佳且為慣用寫法。

switch 選擇結構

<?php
$num = 1;

switch ($num) {
    case 1:
        echo "一";
        break;  // 必須 break,否則會「貫穿」執行下一 case
    case 2:
        echo "二";
        break;
    default:
        echo "其他";
}
// 輸出:一
?>

七、迴圈控制

while 迴圈

<?php
$i = 1;
while ($i <= 10) {
    echo "第 {$i} 次
"; $i++; } // 輸出 1~10 ?>

do...while 迴圈

<?php
$i = 1;
do {
    echo "第 {$i} 次
"; $i++; } while ($i <= 1); // 至少執行一次,輸出 1 次 ?>

for 迴圈

<?php
for ($i = 1; $i <= 3; $i++) {
    echo "第 {$i} 次
"; } // 輸出 1~3 ?>

foreach 迴圈(陣列遍歷專用)

<?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("小明"); // 歡迎,小明! ?>

變數作用域

  • 區域變數:函數內宣告,外部不可存取
  • 全域變數:函數外宣告,需在函數內用 `global $var` 或 `$GLOBALS['var']` 存取
  • 靜態變數:`static $var` 保持值於呼叫之間,不隨函數結束銷毀

九、物件導向程式設計 (OOP) 基礎

類別定義

<?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 基礎、表單處理。建議後續深入學習:

  • 資料庫操作(PDO / MySQLi 預處理語句)
  • Session / Cookie 會話管理
  • 檔案上傳與檔案系統操作
  • 錯誤/例外處理與日誌記錄
  • Composer 套件管理與現代框架
  • 安全最佳實務(CSRF Token、CSP、密碼雜湊)

官方文件 PHP.net 手冊 是最權威、最完整的參考資源,善用它將事半功倍。

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