PHP 程式語法基礎教學,從簡短範例學習 PHP 的核心概念

Man in White and Blue Crew Neck T-shirt Holding Blue and White Love Print

PHP 程式語法的基礎教學:一步步帶你深入 PHP 的世界,從基礎語法到進階函數,通過每個章節的簡短範例與註解,幫助打造堅實的開發根基。

基本語法

PHP 的開始與結束標籤

PHP 腳本以 <?php 開始,並以 ?> 結束。如果一個文件完全由 PHP 編寫,則結束標籤可以省略,這有助於避免在輸出中意外添加空格或換行。

<?php
// 這是 PHP 代碼的開始
echo "Hello, World!";
// 這是 PHP 代碼的結束
?>

如何在網頁中嵌入 PHP 代碼

PHP 代碼可以嵌入 HTML 文件中,以創建動態內容。PHP 代碼可以放置在 HTML 標籤之間。

<!DOCTYPE html>
<html>
<head>
  <title>PHP Test</title>
</head>
<body>
  <?php echo "<p>Hello, World!</p>"; ?>
</body>
</html>

基本的輸出命令:echo 與 print

echoprint 是 PHP 中的兩個基本輸出命令。echo 是一個語言結構,可以快速輸出一個或多個字符串。print 也是類似的,但它只能輸出一個字符串,並且始終返回 1。

<?php
echo "Hello, ", "World!"; // 輸出多個字符串
print "I'm about to learn PHP!"; // 輸出一個字符串
?>

註釋的正確使用方法

註釋是解釋代碼或防止執行代碼的重要工具。PHP 中有單行註釋和多行註釋。

<?php
// 這是單行註釋

/*
這是多行註釋
可以跨越多行。
*/
?>

變數

變數的宣告與命名規則

在 PHP 中,所有變數都以 $ 符號開始,其後是變數的名稱。變數名稱必須以字母或下底線開頭,後面可以跟字母、數字或下底線。

<?php
$varName = "John"; // 正確的變數宣告
$_varName = "Doe"; // 以下劃線開頭的變數宣告
?>

不同類型的變數(整數、浮點數、字串、布林值等)

PHP 支持多種數據類型,包括整數、浮點數(或雙精度數)、字串和布林值。

<?php
$integer = 42; // 整數
$float = 42.24; // 浮點數
$string = "Hello World"; // 字串
$boolean = true; // 布林值
?>

變數的作用域(local、global、static)

變數的作用域決定了在哪裡可以訪問該變數。在 PHP 中,變數可以有局部作用域、全局作用域或靜態作用域。

<?php
$globalVar = "global"; // 全局變數

function testFunction() {
  $localVar = "local"; // 局部變數
  echo $globalVar; // 這會產生錯誤,因為無法在函數內訪問全局變數
}

testFunction();
?>

預定義的超全局變數

PHP 提供了許多預定義的超全局變數,這些變數在全局範圍內始終可用。

<?php
// 使用 $_GET 超全局變數從 URL 獲取數據
echo "Hi " . $_GET['name'] . "!";
?>

更多超全局變數請參考:Predefined Variables

條件判斷

if、else 與 elseif 的基本使用

if 語句用於根據條件執行代碼。如果條件為真,則執行代碼;elseelseif 提供了額外的條件判斷。

<?php
$age = 20;

if ($age >= 18) {
    echo "您是成年人。";
} elseif ($age < 18 && $age > 0) {
    echo "您是未成年人。";
} else {
    echo "無效的年齡。";
}
?>

switch 語句的使用場景

當您需要依據同一變數的值,來區分多個條件時,switch 語句是一個更好的選擇。

<?php
$today = "Monday";

switch ($today) {
    case "Monday":
        echo "今天是星期一。";
        break;
    case "Tuesday":
        echo "今天是星期二。";
        break;
    // 其他情況...
    default:
        echo "查無此日。";
}
?>

比較與邏輯運算符的使用

比較運算符(如 ==, !=, >, <)用於比較兩個值,而邏輯運算符(如 &&, ||, !)用於組合比較運算符。

<?php
$age = 20;
$hasPermission = true;

if ($age >= 18 && $hasPermission) {
    echo "您可以進入。";
} else {
    echo "您無法進入。";
}
?>

迴圈

for

for 迴圈是當您知道迴圈應該執行的次數時使用。

<?php
for ($i = 0; $i < 5; $i++) {
    echo "迴圈次數: $i ";
}
?>

while

當您不知道迴圈應該執行的次數時,使用 while 迴圈。

<?php
$i = 0;
while ($i < 5) {
    echo "迴圈次數: $i ";
    $i++;
}
?>

do-while

do-while 迴圈至少執行一次代碼,然後才檢查條件。

<?php
$i = 0;
do {
    echo "迴圈次數: $i ";
    $i++;
} while ($i < 5);
?>

foreach

foreach 迴圈用於遍歷陣列的元素。

<?php
$colors = ["red", "green", "blue"];

foreach ($colors as $color) {
    echo "顏色: $color ";
}
?>

迴圈控制語句(break、continue)

break 用於立即退出迴圈,continue 用於跳過當前迴圈的剩餘代碼並開始下一次迴圈。

<?php
for ($i = 0; $i < 10; $i++) {
    if ($i == 3) continue; // 跳過數值 3
    if ($i == 8) break; // 當數值達到 8 時退出迴圈
    echo "迴圈次數: $i ";
}
?>

陣列

陣列的創建與基本操作(添加、刪除、排序)

陣列是存儲多個值的變數。在 PHP 中,有多種方式可以創建和操作陣列。

<?php
// 創建陣列
$fruits = array("apple", "banana", "cherry");

// 添加元素
$fruits[] = "durian";

// 刪除元素
unset($fruits[1]); // 移除 "banana"

// 排序
sort($fruits); // 升序排序
?>

數值與關聯陣列的區別

數值陣列使用數字作為索引,而關聯陣列使用您指定的 KEY。

<?php
// 數值陣列
$colors = array("red", "green", "blue");

// 關聯陣列
$ages = array("Peter"=>22, "Clark"=>32, "John"=>28);
?>

陣列的遍歷方法

遍歷陣列即是訪問陣列中的每個元素。foreach 是最常用的遍歷方法。

<?php
// 關聯陣列的遍歷
foreach ($ages as $name => $age) {
    echo "$name is $age years old.";
}
?>

進階陣列

陣列的內建函數

PHP 提供了許多內建函數來操作陣列。

<?php
// array_filter 用於過濾陣列
$numbers = [1, 2, 3, 4, 5];
$even = array_filter($numbers, function($number) {
    return $number % 2 == 0;
});

// array_map 用於對每個元素應用回調函數
$squared = array_map(function($number) {
    return $number * $number;
}, $numbers);
?>

陣列的合併、分割與比較

合併陣列可以使用 array_merge,分割陣列可以使用 array_slice,比較陣列可以使用 array_diffarray_intersect

<?php
// 合併陣列
$combined = array_merge($fruits, $colors);

// 分割陣列
$sliced = array_slice($combined, 1, 3);

// 比較陣列
$difference = array_diff($combined, $fruits);
?>

函數

自定義函數的創建與參數

在 PHP 中,自定義函數是一種封裝代碼以便重用的方式。函數可以接受參數,這些參數可以是任何類型的數據。

<?php
// 定義一個函數
function greet($name) {
    return "Hello, " . $name . "!";
}

// 調用函數
echo greet("World"); // 輸出: Hello, World!
?>

返回值的類型與作用

函數可以返回值,返回值可以是任何類型,包括數組和對象。

<?php
// 定義一個函數返回數組
function getFruitColors() {
    return array('apple' => 'red', 'banana' => 'yellow');
}

// 獲取返回值
$fruitColors = getFruitColors();
echo $fruitColors['apple']; // 輸出: red
?>

匿名函數與閉包(anonymous or closures)

匿名函數,也稱為閉包,允許臨時創建一個沒有指定名稱的函數。

<?php
// 匿名函數
$greet = function($name) {
    return "Hello, " . $name . "!";
};

// 調用匿名函數
echo $greet("PHP"); // 輸出: Hello, PHP!
?>

進階函數

引用傳遞與值傳遞的差異

在 PHP 中,默認情況下函數參數是通過值傳遞的。如果希望通過引用傳遞,可以在參數前加上 & 符號。

<?php
// 通過引用傳遞
function addExclamation(&$string) {
    $string .= "!";
}

$str = "Hello";
addExclamation($str);
echo $str; // 輸出: Hello!
?>

可變參數函數的使用

可變參數函數允許接受任意數量的參數。

<?php
// 可變參數函數
function sum(...$numbers) {
    return array_sum($numbers);
}

echo sum(1, 2, 3, 4); // 輸出: 10
?>

類型聲明與嚴格模式的使用

類型聲明允許函數指定參數和返回值的類型。自 PHP 7 起,可以啟用嚴格模式。

<?php
// 啟用嚴格模式
declare(strict_types=1);

function add(int $a, int $b): int {
    return $a + $b;
}

echo add(5, "5"); // 類型錯誤
?>

預設狀況下不會有錯誤,因為啟用了嚴格模式,數字 5 和字串 “5” 是不同的。

生成器(generators)的使用

生成器提供了一種簡單的方式來實現迭代器,允許你通過 yield 關鍵字來生成一系列的值。

<?php
// 使用生成器
function getNumbers() {
    for ($i = 0; $i < 5; ++$i) {
        yield $i;
    }
}

foreach (getNumbers() as $number) {
    echo $number . PHP_EOL; // 輸出: 0 1 2 3 4
}
?>

最後

在學習了 PHP 的基礎知識後,您已經具備了開始建立網頁應用程式的能力。但是,程式設計和網頁開發是一個不斷進步的領域,有許多進階主題和相關技術等待您的探索。

以下是一些您可以繼續學習的方向:

物件導向程式設計(OOP)

深入了解類別、物件、繼承、多態性和封裝等概念,這些都是物件導向程式設計的核心。透過OOP,您可以寫出更模組化、可重用和易於維護的代碼。

設計模式

設計模式是前人的心血結晶,實作經由驗證過的解決方案,解決特定問題領域。這些模式提供了一個重用軟件設計的方法,可以在許多不同情境中使用,而不必每次都重新發明輪子。

PHP 框架

學習如 Laravel、Symfony 或 CodeIgniter 等流行的PHP框架。這些框架提供了許多功能,如路由、模板引擎、ORM、安全性和緩存,可以幫助您更快速、更高效地開發複雜的應用程式。

資料庫

除了MySQL,您可以探索其他類型的資料庫,如 PostgreSQL、MongoDB 或 Redis。了解如何設計資料庫、執行複雜查詢和優化資料存取效能。

安全性

網站安全是一個廣泛且複雜的主題,包括了解如何防範 SQL 注入、跨站腳本(XSS)、跨站請求偽造(CSRF)和其他安全漏洞。

API 開發

學習如何創建和使用 Web API,包括 REST 和 GraphQL。了解如何設計良好的 API 介面,以及如何使用OAuth 等方式來保護您的 API 和資料。

測試和維護

學習自動化測試,包括單元測試、功能測試和集成測試,以確保您的代碼品質。了解如何使用版本控制系統,如 Git,來管理代碼變更和協作。

性能優化

探索如何優化 PHP 代碼的性能,包括使用 OPcache、瞭解資料庫索引、緩存策略和代碼剖析。

現代前端技術

PHP 通常用於後端開發,但了解前端技術如 HTML、CSS、JavaScript 及框架如 React 或 Vue.js,將使您成為一名全端開發者。

透過不斷學習和實踐,將能夠擴展更多技能,並在網頁開發的世界中保持競爭力。

更多參考教學:PHP Language Reference

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *