一、定義方式
單引号/ 雙引号 / heredoc 和 newdoc;(三種)
1、 單引号
// 單引号定義變量
$str = 'a b c d e f $a g'; // 此時$a會被原樣輸出
2、 雙引号
// 此處可以把 '{$a}' 換成特殊字元,如 & $a &
// 原因:單引号的執行效率更高,且将name放到外面可讀性更強。
$str = "a b c d e f '{$a}' g h"; // a b c d e f $a的值 g h
注:雙引号中包含單引号,單引号中包含變量,該變量是會被解析的,因為最外層是雙引号,且裡面的單引号會被原樣輸出.
使用場景:一般會用于sql語句
不推薦寫法:
$sql = "SELECT * FROM user WHERE name = '$name'"
;
推薦寫法:
;
$sql = 'SELECT * FROM user WHERE name = \''.$name.'\''
3、 heredoc
- 開頭和結尾的名字保持一緻;
- 結尾要放到一行的開頭(前面不可以有任何字元,包括空格)【适用于超長的内容】;
- 功能與雙引号一緻;
$str = <<<EoT
.
. // 内容可以為字元串,可以寫變量、轉義字元等,都可以被解析(功能與雙引号一緻)
.
.
EoT;
4、 newdoc
- 開頭和結尾名字要保持一緻,且定界符處用單引号括起來;
- 結尾要放到一行的開頭(前面不可以有任何字元,包括空格)【适用于超長的内容】;
- 功能與單引号一緻
// newdoc
$str = <<<'EoT'
.
.
.
.
EoT;
二、差別
- 單引号:
- (1) 單引号不能解析變量;
- (2) 單引号不能解析轉義字元,隻能解析單引号和反斜杠本身;
- (3) 變量和變量、變量和字元串、字元串和字元串之間可以用.連接配接;
- (4) 單引号的效率更高;
- 雙引号:
- (1) 雙引号可以解析變量,變量可以使用特殊字元和{}包含;
- (2) 雙引号可以解析所有轉義字元;
- (3) 也可以使用.來連接配接;
- heredoc 和 newdoc:
- (1) heredoc 功能類似于 雙引号;
- (2) newdow 功能類似于 單引号;
- (3) 兩者都是用來處理大文本。