碎碎念
记录一些PHP中字符串的学习记录。
双引号和单引号的区别
- 双引号可以用来解析变量,单引号不解析变量。所以,如果纯输出字符串,单引号的效率会高一些;
- 双引号会解析内部所有的转义符,单引号则仅仅解析
\\
与\'
;
花括号的运用
- 划分变量的界限
PHP在解析到$时会尽可能多的标识来解析一个变量,可以用大括号把变量括起来可以让变量成为一个整体,明确变量名的界限,后面还可以加其它字符串,避免解析错误。注意,花括号之间不能有空格。
<?php
echo "我的名字是{$username}哈哈哈哈";
- 字符串增删改查
需要注意:
- 字符串下标从0开始
- 也可以用
[]
达到同样的效果 - 只能用一个字符修改一个字符,
$str{1}='hello'
只能取字符h - 不适合使用中文这种多字节编码的语言
<?php
$str = 'Hello World';
echo $str{1}; // e
$str{1}=''; // 删除操作,其实只是替换,长度并没有改变
$str{1}='h'; // 更新操作
$str{11}=';'; // 增加操作
echo $str{mt_rand(0, strlen($str)-1)}; // 随机出现一个字母
heredoc/nowdoc
当有大段内容时可以采用EOF大段内容的写法。如果字符串中需要解析变量,可以使用heredoc,否则使用nowdoc。
heredoc相当于双引号的功能,可以解析变量,语法如下:
<?php
<<<xxx
内容......
xxx;
需要注意:
- 结束符前面不能有任何内容,制表符空格都不行;
- 标示名只能包含字母,数字,下划线,必须以字母,下划线开始;
- 内部内容不用考虑单双引号;
- PHP5.3后标示符名称可以用双引号扩起来;
nowdoc只是把标示符名称放在单引号内,不解析变量和转义符。
截屏2020-01-13下午1.09.59.png
字符串类型转换
- 数值echo后还是数值本身
- 布尔值echo后,true转换为1,false转换为空字符串
- null也转换为空字符串
- echo array(1,2,3,4,5);,返回字符串的Array
- 资源转换,
$handle=fopen('str.text', 'r'); var_dump($handle)
,返回resource of type(stream)
,此时直接echo资源则返回Resource id #3
- 对象不能直接转换为字符串,会包致命错误
强制转换
- 临时转换
即不改变原变量的类型,(string)
与strval()
<?php
$var=123;
$res=(string)$var;
var_dump($res); // string(3) "123"
$boo=true
var_dump(strval($boo)); // string(1) "1"
同样的,布尔类型会转换成变量"1"
;false会转换成""
;
- 永久转换
settype()
与gettype()
。
$var='gaohang';
$var1=123;
echo gettype($val); // string
echo gettype($var1); // integer
settype($varq,'string');
- 数字与字符串相加规律
如图,如果数字遇到完全的字符串,则字符串为0,若字符串首位为合法数字,则取首位的数字。
- string转换为布尔类型
有以下几种情况会被转换为false,大致可以记忆为字符串或字符串的0:
- null
- ""
- "0" // "0.0"为真
- 0;
- 0.0
- array()
网友评论