PHP定义字符串的四种方式

1、简介

  在PHP中这门语言中,因为是弱类型语言,因此使用变量时不需提前定义即可使用。

  我们在使用php进行开发的时候,大多数使用双引号、单引号进行定义字符串。既然有这两种方式,那么他们之间肯定是有区别的。

  并且,除了单双引号定义字符串这两种方式外,php还增加了heredoc和nowdoc这两种语法糖进行补充。

2、单引号与双引号

  2.1、单引号

  在单引号中,任何特殊字符都会按原样输出【除\\、\‘将会被转义输出】

eg.

1 <?php
2 $var = ‘this is a var!‘;
3 echo ‘666$var666、\‘、\"、\\、\n、\r、\t、\$‘;

  从上面例子中我们可以明显看到,变量是没有被解析的;同时带反斜杠的转义字符仅仅只有单引号、反斜杠被转义输出了,其他的是直接输出。

  2.2、双引号

  在双引号中,遇到$将会解析该变量;

  双引号中会转义反斜杠的转义字符;

转义字符代码 转义字符的含义
\ " 双引号
\ ‘ 单引号
\ \ 反斜杠
\ n 换行符
\ r 回车符
\ t 制表符
\ $ 美元符号

eg.

1 <?php
2 $var = ‘this is a var!‘;
3 echo "666$var 666、\‘、\"、\\、\n、\r、\t、\$";

  由上面例子我们可以知道,双引号中的变量被解析了,替换成字符串;其他带反斜杠的转义字符都进行了相应的转义。

  2.3、单双引号之间的区别

以上两者主要区别:

  1、双引号会替换变量的值,而单引号会把它当做字符串输出。

  2、对于转义的支持

  3、性能速度问题,由于双引号中的字符串需要检测是否含有$符号修饰的变量,因此从理论上讲,单引号是比较快的。

3、heredoc与nowdoc

  3.1、heredoc

  heredoc可以理解为不使用双引号来定义字符串,但效果与使用双引号一致。【此时双引号相当于普通字符】

语法要求:

  1、开始标记和结束标记使用相同的字符串,通常以大写字母来写。

  2、开始标记后不能出现空格或多余的字符。

  3、结束标记必须顶头写,不能有缩进和空格,且在结束标记末尾要有分号 。

  4、位于开始标记和结束标记之间的变量可以被正常解析,但是函数则不可以。

eg.

 1 <?php
 2
 3 $var = ‘this is suifeng‘;
 4
 5 echo <<<"EOT"
 6
 7 <!DOCTYPE html>
 8 <html>
 9 <head>
10     <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
11     <title>"随风"</title>
12 </head>
13 <body>
14 66666666666<br/>
15 "666666666"<br/>
16 $var<br/>
17 \$var<br/>
18 \n666<br>
19 </body>
20 </html>
21
22 EOT;

  从打印的结果我们可以看出:此时双引号仅仅只是一个普通字符;其他的效果和双引号的字符串效果一致。

  3.2、nowdoc

  同理,nowdoc是不使用单引号来定义,但效果相当于使用单引号来定义的字符串。【此时单引号相当于普通字符】

  语法同heredoc

eg.

 1 <?php
 2
 3 $var = ‘this is suifeng‘;
 4
 5 echo <<<‘EOT‘
 6
 7 <!DOCTYPE html>
 8 <html>
 9 <head>
10     <meta http-equiv="Content-Type" content="text/html; charset=utf8" />
11     <title>"随风"</title>
12 </head>
13 <body>
14 ‘02020‘<br/>
15 \‘<br/>
16 66666666666<br/>
17 "666666666"<br/>
18 $var<br/>
19 \$var<br/>
20 \n666<br>
21 </body>
22 </html>
23
24 EOT;

注意:

  定界符之后必须不能有任何字符【特别是空格字符有时会没注意到】,否则将会出错。

  如上例中的EOT后面有空格就会报这个错误:【Parse error: syntax error, unexpected ‘<<‘ (T_SL)】

(以上是自己的一些见解,若有不足或者错误的地方请各位指出)

作者:那一叶随风   http://www.cnblogs.com/phpstudy2015-6/

原文地址:http://www.cnblogs.com/phpstudy2015-6/p/8418822.html

声明:本博客文章为原创,只代表本人在工作学习中某一时间内总结的观点或结论。转载时请在文章页面明显位置给出原文链接

原文地址:https://www.cnblogs.com/phpstudy2015-6/p/8418822.html

时间: 2024-10-09 06:22:48

PHP定义字符串的四种方式的相关文章

定义字符串的两种方式

定义字符串的两种方式 数组定义 char name[] = "answer" 指针定义 char *name = "answer" 比较 字符串里的字符可以修改,而字符串是一个常量,字符串里面的字符不能修改. >Tips:可以与我的另外一篇文章一起看.http://blog.csdn.net/u011192270/article/details/46475981 版权声明:本文为博主原创文章,未经博主允许不得转载.

JavaScript中定义对象的四种方式 2012-5-10 15:19 阅读(0)

最近在阅读< JavaScript 高级程序设计>,未免遗忘读过的内容,就打算以博客的形式做些读书笔记.今天介绍的是 JavaScript 中的四种定义对象的方法,除了这四种方法,还有工厂方法来定义对象,但考虑到其简单性及非正规性,这里就不做介绍.和 Java 这样的面向对象语言相比, JavaScript 更像是函数式语言,其并没有类的概念,盖之以对象定义的概念,而具体创建的对象叫做对象的实例. 1)构造函数方式定义对象. 这种方式是在构造函数内定义属性和方法.这里举个简单的例子: func

JavaScript中定义对象的四种方式

最近在阅读< JavaScript 高级程序设计>,未免遗忘读过的内容,就打算以博客的形式做些读书笔记.今天介绍的是 JavaScript 中的四种定义对象的方法,除了这四种方法,还有工厂方法来定义对象,但考虑到其简单性及非正规性,这里就不做介绍.和 Java 这样的面向对象语言相比, JavaScript 更像是函数式语言,其并没有类的概念,盖之以对象定义的概念,而具体创建的对象叫做对象的实例.     1)构造函数方式定义对象. 这种方式是在构造函数内定义属性和方法.这里举个简单的例子:

OC--定义字符串的两种方式

1.常量区 存放一些常量字符串2.堆 对象3.栈 存放局部变量 掌握:1.定义字符串的两种方式 1>利用数组 char name[] = "itcast"; 特点:字符串里面的字符是可以修改的 2>利用指针 char *name = "itcast"; 特点:字符串其实是一个常量字符串,里面的字符是不能修改的

C# 字符串拼接性能探索 c#中+、string.Concat、string.Format、StringBuilder.Append四种方式进行字符串拼接时的性能

本文通过ANTS Memory Profiler工具探索c#中+.string.Concat.string.Format.StringBuilder.Append四种方式进行字符串拼接时的性能. 本文涉及程序为.NET Core 2.0控制台应用程序. 一.常量字符串拼接 private static void TestPerformance(Action action, int times) { Stopwatch sw = new Stopwatch(); sw.Start(); for(i

JavaScript学习12 JS中定义对象的几种方式【转】

avaScript学习12 JS中定义对象的几种方式 转自:  http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型("prototype")方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascript

(六)javascriptJS中定义对象的几种方式(转)

JavaScript学习12 JS中定义对象的几种方式 转自:  http://www.cnblogs.com/mengdd/p/3697255.html JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型("prototype")方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascrip

[转]JSon数据解析的四种方式

转至http://blog.csdn.net/enuola/article/details/7903632 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此"http://www.bejson.com/"网站来进行JSON格式化校验(点击打开链接).此网站不仅可以检测Json代码中的错误,而且可以以视图形式显示json中的数据内容,很是方便. 从IOS5开始,APPLE提供了对json的原生支持(NSJSONS

JavaScript学习12 JS中定义对象的几种方式

JavaScript学习12 JS中定义对象的几种方式 JavaScript中没有类的概念,只有对象. 在JavaScript中定义对象可以采用以下几种方式: 1.基于已有对象扩充其属性和方法 2.工厂方式 3.构造函数方式 4.原型("prototype")方式 5.动态原型方式 一.基于已有对象扩充其属性和方法 <script type="text/javascript"> var object = new Object(); object.name