PHP 的 字符串简介及基本使用 -- PHP 学习 (十)

2019-04-28  本文已影响0人  无故下架内容so账号已弃用

常用的定界符

双引号会解析变量,

单引号不会解析变量, 理论上,使用单引号, 不需要解析变量效率会更快一些,推荐使用单引号

<?php
    header('content-type: text/html;charset=utf-8');

    $str = 'guoyou.li';

    echo "$str"; // => guoyou.li

    echo '<br />';

    echo '$str'; // => $str

语法结构:

<<<标识名称
  内容...
标识名称;

(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 输出结果
<?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

花括号 {} 的作用

<?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"

其他类型转换成字符串类型

自动类型转换规则:

  1. 数值型 => 数值本身
  2. 布尔型 => ture -> 1, false -> 空字符串
  3. null => 空字符串
  4. 数组类型 => array
  5. 资源类型=> Resource id #数字

强制转换/隐式转换

  1. 临时转换:
    (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)
  1. 永久转换
    设置变量类型 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中字符串函数库常用函数解析

学习资料: https://www.imooc.com/learn/726

上一篇 下一篇

猜你喜欢

热点阅读