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

printecho 類似,但只能輸出一個值,並且有回傳值 1:

<?php
print "Hello, World!";
$result = print "Hello";  // $result = 1
?>

echo vs print

特性echoprint
多個參數支援不支援
回傳值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>&copy; <?= $year ?> <?= $siteName ?></p>
    </footer>
</body>
</html>