《开场白》
昨天有几个同学跟我说,双引号与单引号在PHP中似乎差不多。那我是觉得你有关注到这个问题,但是是模糊的,我今天就简单总结了一下吧,大家互相学习一下!!!
最大的体现,我认为自然就是在定义字符串的时候,在PHP中,字符串的定义可以使用单引号,也可以使用双引号。但是必须使用同一种单或双引号来定义字符串。
$str1 = 'php';
$str2 = "php";
echo $str1,'
';//输出 php
echo $str2,'
';//输出 php
咦,有同学要说了,看这不是一样的吗,输出的是同样的结果。
不着急,咱们慢慢往下看!
1.双引号解释变量,单引号不解释变量;所以单引号的执行效率比双引号要高
2.双引号可以解析所有的转义字符,单引号只能解析 \ 和 ' 本身的转义;
3.单双引号混合使用
$str1 = '求索网';
$str2 = '技术部';
echo '这是字符串 str1:','$str1','
';//这是字符串 str1:$str1
echo '这是字符串 str2:',"$str2",'
';//这是字符串 str2:技术部
看出来了吗。
双引号(“”)里面的字段会经过编译器解释,然后再当作HTML代码输出。
单引号(”)里面的不进行解释,直接输出。
至于说到效率问题:
对于使用了双引号的字符串,自然单引号的效率比较高一点(因为双引号要先遍历一遍,判断里面有没有变量,然后再进行操作,而单引号则不需要判断)
那咱们还是先来熟悉一下PHP中的转义字符吧
\是一个转义符,跟在\后面的第一个字符将变的没有意义或特殊意义。
那么什么是变的没有意义呢?
比如’是字符串的定界符,\’的话就使它失去了定界符的意义了,变为普通的’。
比如你可以通过echo ‘\”;输出一个单引号’,同时转义字符\也不会显示。
转义字符\只在在后来是特殊符号时才有转义的功能,而其它的时候,\也只是一个普通的字符。
来看一下常用到的转义字符。
\n:换行
\r:回车
\t:水平制表符,一个缩进
\v:垂直制表符
$:代表$本身
\:代表反斜线本身
\’:单引号本身
\”:代表双引号本身
来看活生生的例子吧!
//先来看看单引号
echo '求索网\\','
';// --------------求索网\
echo ' \'求索网\' ','
';//-----------'求索网'
echo ' \"求索网\" ','
';//-----------\"求索网\"
echo '求索网\t','
';//---------------求索网\t
echo '求索网\n ','
';//--------------求索网\n
echo '求索网\r','
';//---------------求索网\r
问:你看出来什么端倪了吗?
答:发现单引号只能解析\与\’ 只能将这两个在字符串中 转义成 正常的斜杠与单引号,其他的都是原样输出。
//再来看看双引号
echo "求索网\\",'
';// --------------求索网\
echo " \'求索网\' ",'
';//-----------'求索网'
echo "求索网\t",'
';//---------------求索网
echo "求索网\n",'
';//---------------求索网
echo "求索网\r",'
';//---------------求索网
问:双引号可以解析转义字符,可是对于\t,\n等这些为什么在浏览器上没有显示换行呢?
答:你查看页面源代码有换行的,制表符 而html页面的换行效果是标签才换行的 那种转义的换行和制表符就像记事本的enter键换行,是用于字符串的,和html页面无关,所以只有网页的源代码你才能看到换行,你要区分概念 以下示例: php代码: html页面 html源代码。
题意:我想要输出这样的结果 如下所示
this is $str:’求索网’
$str = '求索网';
echo 'this is $str:" \'$str\' "
';
echo "this is \$str:'$str'
";
问:我感觉两个echo语句都可以实现吧?
答:错,你可以动手试试,只有第二个才可以按照题意输出正确的结果
双引号里插入单引号,其中单引号里如果有变量的话,变量解释。
但是单引号里面就算有双引号,也不能解析变量。
所以对与想要在字符串里面的有变量的情况,外面尽量用双引号。
但是对于纯粹的字符串,里面没有要输出的变量的话,用单引号则比较好。
《结束语》
那么现在对PHP的单双引号,应该有个比较清楚的区别吧。