字符串简介
在PHP中如何定义字符串
/**
*提示 'undefined constant still' 没有定义的常量still,说明不加定界符会当成常量解析
*字符串需要书写到定界符中
*定界符 1.单引号 2.双引号 3.heredoc语法结构 4.nowdoc语法结构
*/
echo still;
不同定界符的区别
/**
* 单引号和双引号的区别
* 1.双引号解析变量,单引号不解析变量(因此效率更高)
* 2.双引号解析所有转义符,单引号只解析两个转义符:\\ \'
*/
//当内容和定界符冲突的时候需要使用转义符
$name = 'hanystill';
echo '我的名字是$name','<br/>';//我的名字是$name
echo "我的名字是$name",'<br/>';//我的名字是hanystill
$str = 'He said "I\'m fine."';//He said "I'm fine."
echo $str,'<br/>';
$str = "He said \"I'm fine.\"";//He said "I'm fine."
echo $str,'<br/>';
花括号的作用
/**
* 花括号{}的作用1:
* 当PHP解析器遇到一个美元符号($)时,它会和很多其它解析器一样,去组合尽量多的标识以形成一个合法的变量名
* 可以用花括号来明确变量名的界限,将变量扩成一个整体来解析
*/
//两种写法,推荐{$name},花括号中不要有空格,否则花括号会被当做普通字符
echo "我的名字为{$name}sss",'<br/>';
echo "我的名字为${name}sss",'<br/>';
/**
* 花括号{}的作用2:
* 对字符串中的字符做增删查改操作,字符串下标从0开始,可以使用[]实现相同的操作
* 编辑器报警告,说明不推荐这种写法
* Array or string offset access with curly braces deprecated in PHP 7.4.
* PHP 7.4中使用花括号的数组或字符串偏移访问已弃用。
*/
$str = 'abcdef';
echo $str{0},'<br/>';//a 查找操作
$str{2} = 't';//修改操作,只能用一个字符修改一个字符
echo $str,'<br/>';//abtdef
$str{3} = 'hello';//只会用h替换d
echo $str,'<br/>';//abthef0
$str = '你好';//utf-8编码下,一个中文字符占三个字节
echo $str{0},$str{1},$str{2},'<br/>';//输出“你”,这种操作没啥意义
$str = 'dest';
//删除操作,用空字符串/null替换,提示删除操作未生效 Warning: Cannot assign an empty string to a string offset
$str{2} = '';
$str{2} = null;
$str{5} = 'r';
echo $str,'<br/>';//dest r
var_dump($str);//string(6) "dest r" 字符串长度会变为6
heredoc和nowdoc
<?php
/**
* heredoc语法结构:
* <<<标识名
* 内容...
* 标识名;
* 注意:
* 1.标识名只能包含数字/字母/下划线,并且必须以字母/下划线开头
* 2.结束符前不能有任何内容,例如空格/制表符
* 3.PHP5.3之后可以将标识符用双引号括起来
* 4.heredoc相当于双引号的作用
*/
$name = 'hanystill';
$table = <<<EOF
<table border='1'>
<tr>
<td>编号</td>
<td>名字</td>
<td>内容</td>
</tr>
<tr>
<td>1</td>
<td>{$name}</td>
<td>He said "I'm fine."</td>
</tr>
</table>
EOF;
echo $table;
echo '<hr/>';
echo <<<"T