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

《开场白》
昨天有几个同学跟我说,双引号与单引号在PHP中似乎差不多。那我是觉得你有关注到这个问题,但是是模糊的,我今天就简单总结了一下吧,大家互相学习一下!!!

1.引号的作用

最大的体现,我认为自然就是在定义字符串的时候,在PHP中,字符串的定义可以使用单引号,也可以使用双引号。但是必须使用同一种单或双引号来定义字符串。

$str1 = 'php';
$str2 = "php";
echo $str1,'
'
;//输出 php echo $str2,'
'
;//输出 php

咦,有同学要说了,看这不是一样的吗,输出的是同样的结果。
不着急,咱们慢慢往下看!

2.单双引号最大的区别。

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的单双引号,应该有个比较清楚的区别吧。

你可能感兴趣的:(php)