PHP 代碼嵌入 HTML 使用 <?php ... ?> 標籤。輸出資料常用 echo(可接多參數、無回傳值)與 print(單參數、回傳 1)。
<?php
$name = 'World';
echo 'Hello', $name; // 多參數,效能略優
print 'Hello ' . $name; // 單參數,字串串接
printf('%s 年銷售額: %d 萬', '2024', 1200); // 格式化輸出
$s = sprintf('訂單編號: %06d', 42); // 格式化回傳字串
?>
PHP 為弱型別、動態型別,變數以 $ 開頭,區分大小寫。
bool、int、float、stringarray、objectresource、null<?php
$v = '123.45';
echo gettype($v); // string
echo is_string($v); // true
echo is_numeric($v); // true
$f = (float) $v; // 強制轉型
$i = (int) $f;
$b = (bool) $i;
$a = (array) $s; // 字串轉陣列:['0' => '字串內容']
$o = (object) $a; // 陣列轉物件:stdClass
?>
<?php
// 預設參數、型別宣告(PHP 7+)、回傳型別宣告(PHP 7+)
function calculatePrice(float $price, float $taxRate = 0.05): float
{
return $price * (1 + $taxRate);
}
// 參考傳遞:允許函式修改外部變數
function swap(&$a, &$b) {
[$a, $b] = [$b, $a]; // PHP 7.1+ 解構賦值
}
$x = 10; $y = 20;
swap($x, $y); // $x=20, $y=10
// 可變參數(PHP 5.6+)
function sum(...$numbers): float {
return array_sum($numbers);
}
echo sum(1, 2, 3, 4); // 10
?>
| 作用域 | 說明 | 關鍵字 |
|---|---|---|
| 區域 | 函式內宣告,函式結束銷毀 | - |
| 全域 | 函式外宣告,需 global $var 或 $GLOBALS['var'] 在函式內存取 | global |
| 靜態 | 函式內保留值,不隨呼叫結束銷毀 | static |
| 超全域 | 內建陣列,任何位置可存取 | $GLOBALS, $_SERVER, $_GET, $_POST, $_COOKIE, $_SESSION, $_FILES, $_ENV, $_REQUEST |
<?php
$globalVar = '外部';
function testScope() {
global $globalVar;
$globalVar = '內部修改'; // 影響外部
static $count = 0;
echo ++$count . ' '; // 1 2 3 ...
}
testScope(); testScope(); testScope();
echo $globalVar; // 內部修改
?>
<?php
$varName = 'username';
$$varName = 'Alice'; // 等同 $username = 'Alice'
echo $username; // Alice
// 陣列鍵名動態化
$fields = ['name', 'email', 'phone'];
foreach ($fields as $field) {
${'user_' . $field} = $_POST[$field] ?? '';
}
// 產生 $user_name, $user_email, $user_phone
?>
慎用: 降低代碼可讀性,現代框架多用陣列/物件替代。
if/elseif/else、switch/match(PHP 8+ match 為運算式、嚴格比較)while、do-while、for、foreach(遍歷陣列/物件首選)break、continue、return<?php
// match 運算式(PHP 8+)
$status = match($code) {
200, 201 => '成功',
404 => '找不到',
500 => '伺服器錯誤',
default => '未知狀態',
};
// foreach 進階
foreach ($users as $id => &$user) { // 參考模式可修改原值
$user['processed'] = true;
}
unset($user); // 重要:解除參考,避免後續迴圈污染
?>
掌握上述核心語法,即具備 PHP 開發基礎。建議後續深入學習:陣列操作函式、字串處理/正則、檔案與 I/O、錯誤與異常處理、Composer 套件管理、PSR 規範、主流框架。實作專案是最快的學習路徑。