PHP 中字串定義可用單引號 ' 或雙引號 ",兩者在變量解析、轉義處理上存在本質差異,正確選擇關係效能與語義正確性。
| 特性 | 雙引號 "..." | 單引號 '...' |
|---|---|---|
| 變量解析 | ✓ 解析變量值 | ✗ 視為字面量 |
| 轉義序列 | ✓ 解析 \n \t \" 等 | 僅解析 \\ \' |
| 解析速度 | 較慢(需掃描解析) | 較快(原樣輸出) |
<?php
$i = 80;
$a = "hello$i"; // 雙引號:解析變量
$b = 'hello$i'; // 單引號:字面輸出
echo "<br />\$a = $a"; // 輸出:$a = hello80
echo "<br />\$b = $b"; // 輸出:$b = hello$i
?>
<?php
$a = "hello\""; // 雙引號:\" 被轉義為 "
$b = 'hello"'; // 單引號:\ 保持原樣
echo '<br />' . $a; // 輸出:hello"
echo '<br />' . $b; // 輸出:hello\"
?>
{$var} 語法:"Hello {$user['name']}!"<?php
$iter = 1000000;
$start = microtime(true);
for ($i = 0; $i < $iter; $i++) { $s = "hello $i"; }
echo "雙引號: " . (microtime(true) - $start) . "s\n";
$start = microtime(true);
for ($i = 0; $i < $iter; $i++) { $s = 'hello ' . $i; }
echo "單引號串接: " . (microtime(true) - $start) . "s\n";
?>
雖然單次差異微乎其微,但在高頻迴路、模板渲染等場景,累積效能差距可觀。養成正確引號習慣是 PHP 開發基本功。