字符串是PHP中重要的数据类型之一,属于标量类型。一个字符串是由一些列字符组成,每个字符等同于一个字节,字符串需要书写在定界符中。
常用的定界符
单引号、双引号、heredoc语法结构和nowdoc语法结构
单引号和双引号的区别
- 双引号解析变量,单引号不解析变量;
- \n换行 \r回车 \t水平制表符 \f换页 \$美元符号只能被双引号解析,\\反斜杠可以被单引号和双引号都解析, \’单引号只能被单引号解析
如果一段字符串中存在两个单引号或两个双引号,则需要使用转义符,即当内容和定界符冲突的时候需要使用转义符。
常用的转义符包括
\'单引号 \"双引号
<?php
$str = 'He said \'Hello World\'';
$str = "He said \"Hello World\"";
?>
\n换行 \r回车 \t水平制表符 \f换页 \$美元符号 \\反斜杠
<?php
$str="1\n2\r3\t4\$5\\6\'78";
echo $str;
?>
花括号{}的作用
当PHP解析器遇到一个$符号时,它会和其他很多解析器一样,去组合尽量多的标识以形成一个合法的变量名,这时可以用花括号{}来明确变量名的界限,将变量扩成一个整体来解析。
注意:花括号中间不要用空格
<?php
$a = "hello";
$c = "{$a} world"; // 个人建议这样写:$c = "{$a} world"; 不容易产生歧义
$c = "${a} world";
echo $c."<hr/>";//hello world
?>
可以通过花括号{}对字符串中的指定字符做增删改查操作
- 字符串下标从零开始
- 花括号{}可以使用[]实现相同的操作
<?php
$str='abcd';
echo $str{3};//查
$str{3}='e';//注意只能是一个字符替换一个字符,一一对应,如果不是一个字符,只会取这个字符串的首字母
echo $str;//改
$str = 'hello';
$str{3}='';
echo $str;//删 但不影响原字符串的长度比如hello是五个字符,删除之后还是五个字符的长度
$str = 'world';
$str{5} = 's';
echo $str;//增
$str='你好';//当是汉语时需要知道,一个汉字是三个字符,若想输出一个汉字则需如下写法
echo $str{0};
echo $str{1};
echo $str{2};
?>
PHP中heredoc和nowdoc解析
heredoc语法结构
- 标识符只能保护字母、数字或下划线,并且必须以字母或下划线开始;
- 结束符前不能有任何内容,制表符和空格也不能有;
- PHP5.3之后可以将标识符用双引号括起来,其他的作用和双引号一样;
- 标识符可以自定义,一般的有EOT 、EOD 或EOF,通常大写;
- 标识符也可叫做标识名称。
<<<标识符 //开始
内容...
标识符; //结束
nowdoc语法结构
nowdoc和单引号的作用一样,不解析变量和转义符,标识符需要放在单引号中
<<<'标识符' //开始
内容...
标识符; //结束
例子
<?php
$id = 2;
$username = "queen";
$email = "123456@qq.com";
$str=<<<TABLE
<table border='1' width='80%'>
<tr>
<td>编号</td><td>用户名</td><td>邮箱</td>
</tr>
<tr>
<td>1</td><td>许小珂</td><td>811637032@qq.com</td>
</tr>
<tr>
<td>{$id}</td><td>{$username}</td><td>{$email}</td>
</tr>
</table>
TABLE;
echo $str;
//通过nowdoc的写法
$str=<<<'ECO'
<h1>123</h1>
<p>{$id}</p>
ECO;
echo $str;
?>
PHP中字符串相关数据类型转换
其他类型转换为字符串
自动转换
- 数值类型转换为字符串是数值本身;
- 布尔类型转换为字符串,true转换为1,false转换为空字符串;
- NULL转换为字符串为空字符串;
- 数组转换为字符串型,用echo语句输出,转换为Array,并会出现notice提示;
- 资源转换为字符串输出的结果是 Resource id #3;
- 对象不能直接转换为字符串。
临时转换
通过(string)或者strval()关键字进行转换
<?php
$var=123;
$var=12.3;
$var=true;
$var=false;
$var=NULL;
$var=array(1,2,3);
$var= new Stdclass();
$res=(string)$var;
var_dump($res);
?>
永久转换
通过settype($var,type)设置变量的类型
gettype()得到变量的类型
字符串转换为数值型
取合法数字,如果不是以合法数字开始,转换成0
字符串转换为布尔类型
空字符串、字符串为’0’、整型的0、浮点型的0.0、空数组array()和空值NULL转换为false,其他的转换为true。
发表评论