常用的定界符
- 双引号:
双引号会解析变量,
- 单引号:
单引号不会解析变量, 理论上,使用单引号, 不需要解析变量效率会更快一些,推荐使用单引号
<?php
header('content-type: text/html;charset=utf-8');
$str = 'guoyou.li';
echo "$str"; // => guoyou.li
echo '<br />';
echo '$str'; // => $str
- heredoc 语法结构:
语法结构:
<<<标识名称
内容...
标识名称;
(a) 标识名称只能包含字母,数字,下划线, 并且必须以字母和下划线开始
(b) 结束符前不能有任何内容, 包括制表符和空格等都不可以
<?php
header('content-type: text/html;charset=utf-8');
$name = 'guoyou';
$age = 24;
$table = <<<table
<table border="1">
<tr>
<td>名字</td>
<td>{$name}</td>
</tr>
<tr>
<td>名字</td>
<td>{$age}</td>
</tr>
</table>
table;
echo $table;
$str = <<<"str"
标识符还可以用双引号, heredoc 和双引号作用一样, 解析变量和转义符,
标识名称的双引号 php 5.3 + 可以不写
str;
echo $str;
heredoc 输出结果
- nowdoc 语法结构:
<?php
header('content-type: text/html;charset=utf-8');
$name = 'guoyou';
$age = 24;
$table = <<<'table'
<table border="1">
<tr>
<td>名字</td>
<td>{$name}</td>
</tr>
<tr>
<td>名字</td>
<td>{$age}</td>
</tr>
</table>
<div>nowdoc 和单引号作用一样, 不解析变量和转义符,
标识名称需要放在单引号中</div>
table;
echo $table;
nowdoc 输出结果
花括号 {$var}
当 php 解析器遇到一个美元符号 ($) 的时候, 它会和其他的很多解析器一起, 去组合尽量多的标识以形成一个合法的变量名, 可以用花括号来明确变量名的界限, 将变量扩成一个整体来解析
例子:
<?php
header('content-type: text/html;charset=utf-8');
$name = 'guoyou';
echo "我是$name"; // => 我是guoyou
echo '<br />';
echo "我是$name_li"; // => Notice: Undefined variable: name_li
echo '<br />';
echo "我是{$name}_li"; // => 我是guoyou_li
花括号 {}
的作用
-
可以通过
{}
对字符串中的指定字符串进行增删改查的操作 -
字符串的下标从 0 开始
-
可以通过
[]
实现相同的操作
<?php
header('content-type: text/html;charset=utf-8');
$name = 'guoyou.li';
echo $name{0}; // => g
echo '<br />';
echo $name[0]; // => g
echo '<br />';
$name{6} = '_';
echo $name; // => guoyou_li
echo '<br />';
// 只能用一个字符修改一个字符
$name{0} = 'ABC';
echo $name; // => Auoyou_li
echo '<br />';
$name{20} = 'G';
echo $name; // => Auoyou_li G
echo '<br />';
// 虽然第三位被替换成空字符串 '', 但是字符长度仍然不变
$str = 'abc';
$str{2} = '';
var_dump($str); // => string(3) "ab"
其他类型转换成字符串类型
自动类型转换规则:
- 数值型 => 数值本身
- 布尔型 => ture -> 1, false -> 空字符串
- null => 空字符串
- 数组类型 => array
- 资源类型=> Resource id #数字
强制转换/隐式转换
- 临时转换:
(string)$var
<?php
header('content-type: text/html;charset=utf-8');
$var = 123;
var_dump((string)$var); // => string(3) "123"
echo '<br />';
var_dump($var); // => int(123)
echo '<br />';
$var = true;
var_dump((string)$var); // => string(1) "1"
echo '<br />';
var_dump($var); // => bool(true)
echo '<br />';
$var = array(2,3,4);
var_dump((string)$var); // => string(5) "Array"
echo '<br />';
var_dump($var); // => array(3) { [0]=> int(2) [1]=> int(3) [2]=> int(4) }
echo '<br />';
$var = null;
var_dump((string)$var); // => string(0) ""
echo '<br />';
var_dump($var); // => NULL
echo '<br />';
$var = fopen('utils/a.php', 'r');
var_dump((string)$var); // => string(14) "Resource id #3"
echo '<br />';
var_dump($var); // => resource(3) of type (stream)
- 永久转换
设置变量类型settype($var, type)
获取gettype($var)
<?php
header('content-type: text/html;charset=utf-8');
$var = 123;
settype($var, 'string');
echo gettype($var); // => string
echo '<br />';
$var = 123;
echo gettype($var); // => integer
echo '<br />';
$var = null;
echo gettype($var); // => NULL
echo '<br />';
$var = array();
echo gettype($var); // => array
echo '<br />';
$var = true;
echo gettype($var); // => boolean
字符串转换成其他类型
通过 +
号: 取合法数值, 如果不是合法数值开始, 则转换成 0
'true' => 0
<?php
header('content-type: text/html;charset=utf-8');
echo 1+'34guoyou'; // 1+34 => 35
echo '<br />';
echo 1.2+'3sdf'; // 1.2+3 => 4.2
echo '<br />';
echo 3+'dfs'; // 3+0 => 0
echo '<br />';
echo 5+true; // 5+0 => 5
echo '<br/>';
$var = ''; // => 转换成了 false
$var = '0'; // => 转换成了 false
$var = 0; // => 转换成了 false
$var = null; // => 转换成了 false
$var = array(); // => 转换成了 false
$var = 0.0; // => 转换成了 false
if ($var) {
echo '转换成了 true';
} else {
echo '转换成了 false';
}
后续下篇: PHP中字符串函数库常用函数解析
网友评论