PHP 中单引号与双引号的区别

前言

应该大部分人都知道,在 C、 C++、 Java 等语言中,单引号引用的是单个字符,双引号引用的是一个字符串。笔者之前接触 JavaScript 比较多,在 JavaScript 中单双引号是没有区别的,都可用于引用 string 类型的变量( 在 JSON 中,字符串必须加双引号,单引号会导致语法错误 )。但笔者最近才发现,在 PHP 中单双引号的区别与这些语言都不一样,以下谨作为记录。

单引号

在 PHP 中,用单引号(’)把一个字符串包围起来,代表引用的仅仅是这个字符串本身。也就是说变量 $test 以及转义序列 \n 或者 \r 等并不代表任何含义,就单纯是这几个字符串本身。举几个简单栗子如下:

1
2
3
$test = 'data';
echo '$test is a variable.'; //输出 $test is a variable.
echo '$test is a variable.\n'; //输出 $test is a variable.\n

双引号

与上述所说的单引号不同,PHP中的双引号(”)则会对变量、转义字符等特殊字符进行解析。举几个栗子如下:

1
2
3
$test = 'data';
echo "$test is a variable."; //输出 data is a variable.
echo "$test is a variable.\n"; //输出 data is a variable.(同时换行)

结束语

总结成一句话就是, PHP 里的单引号把内容当成纯文本,不经过服务器翻译,而双引号里面的内容则会经过服务器处理。由于存在这个区别,在PHP中使用引号时结合点操作符(.)操作字符串就可以非常灵活了。比如:

1
2
3
4
5
$name = 'szm';
echo 'My name is '.$name.'.';
echo "My name is $name.";
//两个输出都是 My name is szm.

怎么样,是不是觉得PHP的这个特性很神奇?

------ 本文结束 ------
坚持原创技术分享,您的支持将鼓励我继续创作!