PHP的字符串有4种表示方式:
- 单引号
- 双引号
- heredoc结构
- nowdoc结构
单引号和双引号的都熟悉了,就来看看heredoc结构和nowdoc结构吧
heredoc结构
结构如下:
$str = <<<EOT
字符串正文
EOT;
由<<<开始 然后紧接着一个可自定义的字符串开始标记,测试了下,大小写、甚至中文都支持 。然后换行写字符串正文,最后再换行写字符串结束标记,结束的字符串标记必须和开始的相同,而且前面不能有任何空格,也就是要顶格写,最后跟着一个分号结束。
heredoc结构 其实跟双引号的结构一样的,里面的变量也可以 被直接解析。
$a = 123;
$str = <<<EOT
字符串正文$a
EOT;
echo $str;//输出 字符串正文123
nowdoc结构
nowdoc结构跟heredoc结构大致相同,有一个小不同就是字符串开始标记要用单引号括起来
$a = 123;
$str = <<<'EOT'
字符串正文$a
EOT;
echo $str;//输出 字符串正文$a
nowdoc结构其实跟单引号结构一样,里面的变量不会被解析
字符串中对变量的解析方式
变量解析方式有两种:
1,$符号解析(简单语法)
2,{}花括号解析(复杂语法)
$符号很简单,就是直接在双引号引起了的字符串中直接写变量
$a = 123;
echo "this is $a";//输出this is 123
因为双引号里变量本身就会被解析
{}花括号有两种
$a = 123;
echo "this is {$a}"; //输出 this is 123
echo "this is ${a}";//输出 this is 123
一种是把$符号放里面,一种是放外面。注意,无论是放里面还是外面花括号和$符号,变量字符串之间最好不要有空格,像下面的:
echo "this is { $a }"; //输出 this is { 123 } 花括号不被解析
echo "this is ${ a }";//会报Notice: Use of undefined constant a - assumed 'a' 最后也能输出 this is 123