第四章:第6节 PHP数据类型-字符串

更新于:2017-01-11 19:08:20

给一个变量赋值字符串,是要加英文引号的,就像这样:


$var1 = '这是一个字符串';


$var2 = "这也是一个字符串";


在PHP中可以用单引号,也可以用双引号表示一个字符串。在C语言里,双引号表示字符串,单引号只能用来表示一个字符。注意下,单引号''、双引号""本身只是一种表示方式,不是字符串的一部分。


单引号和双引号字符串,是有不同细节含义的字符串。


单引号字符串:


1.png


结果:


1.png

单引号里面包着单引号,也显示出来了。为什么呢?因为使用了转义符,所以程序就不把 1.png 当成字符串的结束,而是当成字符串里的'字符。


转义字符可以转义很多字符,比如 1.png 表示换行,1.png 表示制表符,字符 1.png 本身也要转义,所以 1.png 表示的字符就是 1.png 。用单引号表示的字符串只支持 1.png 这两种转义字符,用双引号表示的字符串可以支持所有转义字符。


双引号字符串:


1.png


结果:


1.png

1.png”表示换行,查看网页源代码可以看到ab后面换行了。

1.png”表示直接显示字符串引号。

1.png”表示ascii码中八进制101对应的字符。

1.png”表示ascii码中十六进制x41对应的字符。


双引号表示的字符串支持全部的转义字符,也会识别出字符串里的变量,直接显示出值来。


在第三节我们讲解了《关于PHP echo语句里的点、单引号、双引号》,在这里依然受用。如果一个字符串里没有变量或转义符,推荐大家用单引号表示字符串,因为单引号从效率上比双引号好点。


ascii码表里有些字符我们无法在键盘上用一个字符表示,就靠这种形式去表示。更多的转义符见手册如下:


1.png


字符串在内存中存在形式:


前面我们学习了一些编码,ascii码、utf-8编码,字符串就是由一系列的字符组成的。


$var = 'abcd';


这个字符串是有“a”、“b”、“c”、“d”这四个字符组成,你知道这个字符串在内存中所占字节多少吗?从C语言角度说,这个字符串占了5个字节,“a”、“b”、“c”、“d”是四个字节,在“d”的后面有ascii码中数字0作为这个字符串的结尾。计算机表示一个字符串在内存里是靠这个0来结尾的,PHP的母语是C语言,原理楠神认为也是一样的。


比较字符串数字与整型数字


$v = '100';


$i = 100;


这两个变量虽都是100,它们在内存里存在的形式可不一样,$v在内存里占四个字节,分别由ascii码字符“1”、“0”、“0”、“1.png”组成。$i在内存里占一个字节,十进制100的二进制形式存在。


在C、JAVA这些比较严谨的语言里,这两个变量完全不一样,需要自己转换,不转换程序就会报错。PHP是非常智能的,这两个变量在很多场合意义是一样的,可以轻松转换。PHP为什么会简单,就是因为更多以人角度去考虑问题,不是以计算机角度考虑问题,减轻了程序员的工作。后面会讲解不同数据类型的转换。


字符串的另外两种表示形式:


nowdoc(单引号)定界符字符串:


1.png


输出结果为:


1.png


heredoc(双引号)定界符字符串:


1.png


结果:


1.png


上面这两种方式楠神感觉用得不多,很少用。


本节学习代码》》》