PHP定义字符串的四种方式详解

1、简介

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

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

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

2、单引号与双引号

2.1、单引号

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

eg.

rush:PHP;"> PHP $var = 'this is a var!'; echo '666$var666、\'、\"、\\、\n、\r、\t、\$';

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

2.2、双引号

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

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

rush:PHP;"> PHP $var = 'this is a var!'; echo "666$var 666、\'、\"、\\、\n、\r、\t、\$";

ottom: 1.5em; font-size: 14px; max-width: 100%; border-top: rgb(221,221,221) 1px solid; font-family: "Helvetica Neue",Helvetica,Tahoma,Arial,STXihei,"Microsoft YaHei",微软雅黑,sans-serif; border-right: rgb(221,221) 1px solid; width: 682px; white-space: normal; word-spacing: 0px; border-collapse: separate; border-bottom: rgb(221,221) 1px solid; text-transform: none; border-left-color: ; font-weight: normal; color: rgb(51,51,51); font-style: normal; border-spacing: 0px; orphans: 2; widows: 2; letter-spacing: normal; line-height: 1.3em; background-color: rgb(254,254,254); text-indent: 0px; border-radius: 4px; border-image: initial; font-variant-ligatures: normal; font-variant-caps: normal; -webkit-text-stroke-width: 0px"> ottom: 8px; text-align: left; padding-top: 8px; padding-left: 8px; border-left: rgb(221,221) 1px solid; line-height: 1.3em; padding-right: 8px; border-top-left-radius: 4px">转义字符代码ottom: 8px; text-align: left; padding-top: 8px; padding-left: 8px; border-left: rgb(221,221) 1px solid; line-height: 1.3em; padding-right: 8px; border-top-right-radius: 4px">转义字符的含义ottom: 8px; text-align: left; padding-top: 8px; padding-left: 8px; border-left: rgb(221,221) 1px solid; line-height: 1.3em; padding-right: 8px">\ "ottom-left-radius: 4px">\ $ottom-right-radius: 4px">美元符号

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

2.3、单双引号之间的区别

以上两者主要区别:

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

2、对于转义的支持

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

3、heredoc与Nowdoc

3.1、heredoc

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

语法要求:

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

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

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

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

eg.

rush:PHP;"> PHP $var = 'this is suifeng'; echo <<<"EOT" "随风" 66666666666
"666666666"
$var
\$var
\n666
EOT;

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

3.2、Nowdoc

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

语法同heredoc

eg.

rush:PHP;"> PHP $var = 'this is suifeng'; echo <<<'EOT' "随风" '02020'
\'
66666666666
"666666666"
$var
\$var
\n666
EOT;

注意:

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

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

总结

以上所述是小编给大家介绍的PHP定义字符串的四种方式详解,希望对大家有所帮助。程序员遇到问题都会上(编程之家jb51.cc)查找问题解答方法!如果觉得站点还不错,随手转发给程序员朋友一下!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


服务器优化必备:深入了解PHP8底层开发原理
Golang的网络编程:如何快速构建高性能的网络应用?
Golang和其他编程语言的对比:为什么它的开发效率更高?
PHP8底层开发原理揭秘:如何利用新特性创建出色的Web应用
将字符重新排列以形成回文(如果可能)在C++中
掌握PHP8底层开发原理和新特性:创建高效可扩展的应用程序
服务器性能优化必学:掌握PHP8底层开发原理
PHP8新特性和底层开发原理详解:优化应用性能的终极指南
将 C/C++ 代码转换为汇编语言
深入研究PHP8底层开发原理:创建高效可扩展的应用程序
C++程序查找法向量和迹
PHP8底层开发原理实战指南:提升服务器效能
重排数组,使得当 i 为偶数时,arr[i] >= arr[j],当 i 为奇数时,arr[i] <= arr[j],其中 j < i,使用 C++ 语言实现
Golang的垃圾回收:为什么它可以减少开发人员的负担?
C++程序:将一个数组的所有元素复制到另一个数组中
Golang:构建智能系统的基石
为什么AI开发者应该关注Golang?
在C和C++中,逗号(comma)的用法是用来分隔表达式或语句
PHP8底层开发原理解析及新特性应用实例
利用PHP8底层开发原理解析新特性:如何构建出色的Web应用