PHP 基本語法 (Syntax)
這篇文章介紹 PHP 的基本語法規則,了解這些規則是撰寫 PHP 程式的基礎。
PHP 標籤
PHP 程式碼必須放在 PHP 標籤內,伺服器才會執行:
<?php
// PHP 程式碼
?>
標準標籤(推薦)
<?php
echo "Hello, World!";
?>
短標籤
<?= "Hello, World!" ?>
<?= 是 <?php echo 的簡寫,用於輸出內容。
短標籤
<?= ?> 在 PHP 5.4+ 預設開啟,但傳統的 <? ?> 短標籤需要在 php.ini 設定 short_open_tag = On 才能使用,不建議使用。分號
每個 PHP 陳述式(statement)必須以分號 ; 結尾:
<?php
echo "Hello";
echo "World";
$name = "Alice";
?>
忘記加分號是初學者最常犯的錯誤之一:
<?php
echo "Hello" // 錯誤!缺少分號
echo "World";
?>
最後一行在結尾標籤 ?> 之前可以省略分號,但不建議這樣做:
<?php
echo "Hello";
echo "World" // 可以,但不建議
?>
大小寫敏感性
關鍵字、函數名稱、類別名稱:不區分大小寫
<?php
// 這些都是一樣的
ECHO "Hello";
echo "Hello";
Echo "Hello";
// 函數名稱也不區分大小寫
$len = STRLEN("Hello");
$len = strlen("Hello");
$len = Strlen("Hello");
?>
變數名稱:區分大小寫
<?php
$name = "Alice";
$Name = "Bob";
$NAME = "Charlie";
// 這三個是不同的變數
echo $name; // Alice
echo $Name; // Bob
echo $NAME; // Charlie
?>
雖然關鍵字和函數不區分大小寫,但建議統一使用小寫,這是 PHP 社群的慣例。
輸出內容
echo
echo 是最常用的輸出方式:
<?php
echo "Hello, World!";
echo "Hello", " ", "World"; // 可以輸出多個值
?>
print 和 echo 類似,但只能輸出一個值,並且有回傳值 1:
<?php
print "Hello, World!";
$result = print "Hello"; // $result = 1
?>
echo vs print
| 特性 | echo | |
|---|---|---|
| 多個參數 | 支援 | 不支援 |
| 回傳值 | 無 | 1 |
| 速度 | 稍快 | 稍慢 |
通常使用 echo 就足夠了。
輸出 HTML
<?php
echo "<h1>標題</h1>";
echo "<p>段落</p>";
?>
輸出變數
<?php
$name = "Alice";
echo "Hello, " . $name; // 用 . 連接字串
echo "Hello, $name"; // 雙引號內可直接使用變數
echo "Hello, {$name}!"; // 使用大括號更清楚
echo 'Hello, $name'; // 單引號不會解析變數,輸出: Hello, $name
?>
字串連接
PHP 使用點號 . 連接字串(不是 +):
<?php
$first = "Hello";
$second = "World";
echo $first . " " . $second; // Hello World
// 連接並賦值
$message = "Hello";
$message .= " World"; // Hello World
?>
空白與換行
PHP 會忽略多餘的空白和換行,以下都是合法的:
<?php
echo "Hello";
echo
"World";
$name="Alice";
$name = "Alice";
$name = "Alice";
?>
為了可讀性,建議遵循一致的程式碼風格。
程式碼區塊
使用大括號 {} 定義程式碼區塊:
<?php
if ($age >= 18) {
echo "成年人";
echo "可以投票";
}
?>
PHP 與 HTML 混合
PHP 可以與 HTML 混合使用:
<!DOCTYPE html>
<html>
<head>
<title><?php echo $title; ?></title>
</head>
<body>
<?php if ($loggedIn): ?>
<p>歡迎回來!</p>
<?php else: ?>
<p>請登入</p>
<?php endif; ?>
<ul>
<?php for ($i = 1; $i <= 5; $i++): ?>
<li>項目 <?php echo $i; ?></li>
<?php endfor; ?>
</ul>
</body>
</html>
替代語法
在 HTML 中混合 PHP 時,可以使用替代語法讓程式碼更易讀:
<?php if ($condition): ?>
<!-- HTML 內容 -->
<?php endif; ?>
<?php foreach ($items as $item): ?>
<!-- HTML 內容 -->
<?php endforeach; ?>
<?php for ($i = 0; $i < 10; $i++): ?>
<!-- HTML 內容 -->
<?php endfor; ?>
<?php while ($condition): ?>
<!-- HTML 內容 -->
<?php endwhile; ?>
<?php switch ($value): ?>
<?php case 1: ?>
<!-- HTML 內容 -->
<?php break; ?>
<?php endswitch; ?>
完整範例
<?php
// 定義變數
$siteName = "我的網站";
$year = date("Y");
$items = ["首頁", "關於", "聯絡"];
?>
<!DOCTYPE html>
<html>
<head>
<title><?= $siteName ?></title>
</head>
<body>
<h1><?= $siteName ?></h1>
<nav>
<ul>
<?php foreach ($items as $item): ?>
<li><?= $item ?></li>
<?php endforeach; ?>
</ul>
</nav>
<footer>
<p>© <?= $year ?> <?= $siteName ?></p>
</footer>
</body>
</html>