字符串的4种表达方式
heredoc类似于双引号字符串
Nowdoc类似于单引号字符串
- 单引号
- 双引号
- heredoc 语法结构
- nowdoc 语法结构
// 单引号
$str1 = 'hello';
// 双引号
$str2 = "hello";
echo $str1,"<br>",$str2,"<br>";
// heredoc定义大段文本
// EOD是自定义的 也可以html等
$str3 = <<<EOD
远看山有色,
近听水无声。
EOD;
echo $str3,"<br>";
// nowdoc定义大段文本
// "EOD"是自定义的 也可以html等
$str4 = <<<"EOD"
远看山有色,
近听水无声。
EOD;
echo $str4,"<br>";
单双引号转义对比
转义的目的:把本来有特殊意义的字符(不会在打印中显示的字符)用(\)转义,从而打印出字符本身。
- 单引号
单引号中只有 ’ 和 \ 有特殊意义,可以用反斜杠转义,其他的如 \r \n等都不能转义,因为他们在单引号中本身就没有特殊意义。
// 想要打印单引号
$str1 = '\'';
echo $str1,"<br>"; // '
// 想要打印反斜杠
$str1 = '\\';
echo $str1,"<br>"; // \
// 单引号中只能转义【'和\】 其他如\n \t \v \$ 在单引号中无特殊意义,仅代表字符本身
$str1 = '\' \\ 哈哈哈\n \t \r';
echo $str1,"<br>"; // ' \ 哈哈哈\n \t \r
- 双引号
双引号中,\n, \r, \t, \v, $, \e, \f,\\ , \" 都有特殊意义,可以用反斜杠转义。除此之外都不可以
// 想要打印双引号
$str1 = "\"";
echo $str1,"<br>"; // "
// 想要打印\
$str1 = "\\";
echo $str1,"<br>"; // \
// 想要打印\n
$str1 = "\\n";
echo $str1,"<br>"; // \n
双引号和heredoc能解析字符串里的变量
单引号和nowdoc不能解析
$age = 18;
$str1 = "我今年 $age 岁";
$str2 = '我今年 $age 岁';
echo $str1,"<br>"; // 我今年 18 岁
echo $str2,"<br>"; // 我今年 $age 岁
单双引号速度比较
结论:单引号速度快
单引号不需要分析有没有变量,需要转义的内容也少,速度比双引号快。优先使用单引号。