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

2 篇文章 0 订阅
1 篇文章 0 订阅

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

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

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

  1. $str1 = 'php';
  2. $str2 = "php";
  3. echo $str1,'<br/>';//输出 php
  4. echo $str2,'<br/>';//输出 php

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

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

  1. 1.双引号解释变量,单引号不解释变量;所以单引号的执行效率比双引号要高
  2. 2.双引号可以解析所有的转义字符,单引号只能解析 \ 和 ' 本身的转义;
  3. 3.单双引号混合使用

【一】双引号解释变量,单引号不解释变量

  1. $str1 = '求索网';
  2. $str2 = '技术部';
  3. echo '这是字符串 str1:','$str1','<br/>';//这是字符串 str1:$str1
  4. echo '这是字符串 str2:',"$str2",'<br/>';//这是字符串 str2:技术部

看出来了吗。 

双引号(“”)里面的字段会经过编译器解释,然后再当作HTML代码输出。 
单引号(”)里面的不进行解释,直接输出。 
至于说到效率问题: 
对于使用了双引号的字符串,自然单引号的效率比较高一点(因为双引号要先遍历一遍,判断里面有没有变量,然后再进行操作,而单引号则不需要判断)

【二】转义字符的解析
那咱们还是先来熟悉一下PHP中的转义字符吧 
\是一个转义符,跟在\后面的第一个字符将变的没有意义或特殊意义。 
那么什么是变的没有意义呢? 
比如’是字符串的定界符,\’的话就使它失去了定界符的意义了,变为普通的’。 
比如你可以通过echo ‘\”;输出一个单引号’,同时转义字符\也不会显示。 
转义字符\只在在后来是特殊符号时才有转义的功能,而其它的时候,\也只是一个普通的字符。 
来看一下常用到的转义字符。

\n:换行 
\r:回车 
\t:水平制表符,一个缩进 
\v:垂直制表符 
$:代表$本身 
\:代表反斜线本身 
\’:单引号本身 
\”:代表双引号本身

来看活生生的例子吧!

//先来看看单引号
echo '求索网\\','<br/>';// --------------求索网\
echo ' \'求索网\' ','<br/>';//-----------'求索网' 
echo ' \"求索网\" ','<br/>';//-----------\"求索网\"  
echo '求索网\t','<br/>';//---------------求索网\t
echo '求索网\n ','<br/>';//--------------求索网\n 
echo '求索网\r','<br/>';//---------------求索网\r


问:你看出来什么端倪了吗? 
答:发现单引号只能解析\与\’ 只能将这两个在字符串中 转义成 正常的斜杠与单引号,其他的都是原样输出。

//再来看看双引号
echo "求索网\\",'<br/>';// --------------求索网\
echo " \'求索网\' ",'<br/>';//-----------'求索网' 
echo "求索网\t",'<br/>';//---------------求索网
echo "求索网\n",'<br/>';//---------------求索网
echo "求索网\r",'<br/>';//---------------求索网

问:双引号可以解析转义字符,可是对于\t,\n等这些为什么在浏览器上没有显示换行呢? 
答:你查看页面源代码有换行的,制表符 而html页面的换行效果是标签才换行的 那种转义的换行和制表符就像记事本的enter键换行,是用于字符串的,和html页面无关,所以只有网页的源代码你才能看到换行,你要区分概念 以下示例: php代码: html页面 html源代码。

【三】单双引号混合使用
题意:我想要输出这样的结果 如下所示 

  1. this is $str:’求索网’
  2. $str = '求索网';
  3. echo 'this is $str:" \'$str\' " <br/>';
  4. echo "this is \$str:'$str' <br/>";


问:我感觉两个echo语句都可以实现吧? 
答:错,你可以动手试试,只有第二个才可以按照题意输出正确的结果 
双引号里插入单引号,其中单引号里如果有变量的话,变量解释。 
但是单引号里面就算有双引号,也不能解析变量。 
所以对与想要在字符串里面的有变量的情况,外面尽量用双引号。 
但是对于纯粹的字符串,里面没有要输出的变量的话,用单引号则比较好。
那么现在对PHP的单双引号,应该有个比较清楚的区别吧。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值