首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 相關知識

PHP 單引號與雙引號區別新手完全指南:解析、轉義、性能

     編輯:PHP 相關知識

核心結論先行

特性單引號 '...'雙引號 "..."
變量解析❌ 不解析,原樣輸出✅ 解析 $var、{$arr['key']}、{$obj->prop}
轉義序列僅 \'、\\完整支援 \n、\t、\r、\"、\$、\{ 等
性能略快(無解析開銷)極微慢(需掃描解析),實際項目可忽略
嵌套引號內部可直接寫 "內部可直接寫 '

語法規則詳解

1. 成對匹配原則

字符串必須由**同種引號**包裹開始和結束:

$s1 = 'I am a string in single quotes';   // ✅
$s2 = "I am a string in double quotes";   // ✅
$s3 = "Invalid string';                   // ❌ Parse error
$s4 = 'Me neither!";                      // ❌ Parse error

2. 雙引號內的變量解析

$name = 'World';
echo "Hello $name";           // Hello World
echo "Hello {$name}";         // Hello World (推薦加花括號,邊界清晰)
echo "Hello ${name}";         // Hello World

$arr = ['key' => 'value'];
echo "Value: {$arr['key']}";  // Value: value
echo "Value: $arr[key]";      // Value: value (但不推薦,易混淆常量)

class A { public $p = 'prop'; }
$obj = new A();
echo "Prop: {$obj->p}";       // Prop: prop

3. 轉義序列對比

// 單引號:只認 \' 和 \\
echo 'It\'s OK';      // It's OK
echo 'C:\\Windows';   // C:\Windows
echo '\n';            // 輸出字面 \n (兩字符)

// 雙引號:完整支援
echo "Line1\nLine2";      // 換行
echo "Tab:\tHere";       // 制表符
echo "He said \"Hi\"";   // He said "Hi"
echo "Price: \$100";     // Price: $100 (轉義 $ 防止被解析為變量)
echo "{$var}";           // 花括號內 $ 可不轉義

4. 實際開發建議

  • 純靜態字符串:用單引號,語義明確、微快。
  • 需變量插值/換行/制表:用雙引號,可讀性高。
  • SQL/Shell 命令拼接:嚴禁雙引號直接插值,必須用參數化查詢或 escapeshellarg。
  • Heredoc/Nowdoc:大段多行文本用 <<< 'EOT' (Nowdoc, 如單引號) 或 <<< "EOT" (Heredoc, 如雙引號)。

常見坑

  1. '$var' 輸出字面 $var 而非值。
  2. "C:\new" 中 \n 被解析為換行 → 路徑錯誤,**Windows 路徑用單引號或雙反斜槓**。
  3. "{$arr[key]}" 若 key 未定義常量會觸發 Notice,應寫 "{$arr['key']}"。

掌握引號語義,字符串處理不再出錯。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved