'...' 或 "...",不可混用 '...""He said \"Hi\""| 情境 | 雙引號 | 單引號 |
|---|---|---|
| 變數插值 | "$var" → 解析值 | '$var' → 字面文字 |
| 跳脫序列 | \n \t \\ \$ 解析 | 僅 \\ \' 解析 |
| 效能 | 需解析,略慢 | 無解析,略快 |
$foo = 2; echo "foo is $foo"; // foo is 2 echo 'foo is $foo'; // foo is $foo echo "foo is $foo\n"; // foo is 2 + 換行 echo 'foo is $foo\n'; // foo is $foo\n(字面)
陣列、物件屬性在雙引號中需用大括號包裹:
echo "value = {$arr[$i][$j]}"; // 正確
echo "value = {$obj->prop->sub}"; // 正確
echo "value = {$func()}"; // PHP 7+ 支援函數呼叫
$sql = "INSERT INTO users (name) VALUES ('O'Reilly')"; // 語法錯誤
VALUES ('O\'Reilly')$s = addslashes("O'Reilly"); VALUES ('$s')$stmt = $pdo->prepare("INSERT INTO users (name) VALUES (?)"); $stmt->execute(["O'Reilly"]);// 複雜變數分離連接,可讀性佳
echo 'Value: ' . $arr[$i][$j] . ' - ' . $obj->name;
// 或使用雙引號 + 大括號
echo "Value: {$arr[$i][$j]} - {$obj->name}";