11. 字符串详解
11.1. 4种不同形式的字符串
11.1.1. 单引号字符串
形式: $s1 = ‘字符串内容’
特点:
只能使用2个转义符: \n \t ‘ “ \(代表一个反斜杠) \’(代表一个单引号)
通常,如果没有其他特殊需求(比如字符串中使用一些转义符,以及一些变量),则推荐使用单引号字符串。!不能解析变量
11.1.2. 双引号字符串
形式: $s1 = “字符串内容”
特点:
1,能使用较为丰富的转义符,包括:\\ \” \n \r \t \$等
\n :代表“换行符”(就是一个新行)
\r :代表“回车符”(其实也是一个新行)
\t :代表“tab符”,
$v1 = 10;
echo “结果为:$v1”; //输出内容为: 结果为:10
echo “结果为:\$v1”; //输出内容为: 结果为:$v1
image.png
1、单引号不能解析变量,双引号能够解析变量(变量不要加引号解析)
2、使用{}代替字符串和变量连接
image.png
1.1.3. heredoc字符串
形式:$s1 = <<<“标识符”
这里写字符内容,可以多行写
标识符;
特点:
1,特点跟双引号字符串一样!
注意:
标识符结束那一行,只能出现标识符及紧挨着的分号,任何其他字符都不可以出现。
image.png
11.1.4. nowdoc字符串
形式:$s1 = <<<‘标识符’
这里写字符内容,可以多行写
标识符;
特点:无特点,是最“纯净”的字符串,写什么就是什么。
heredoc字符串,和nowdoc字符串,适用于表达(描述)一大段内容的字符串,特别是适合于写html部分的代码(含js,css等)。
如下:
image.png
11.2. 字符串的长度问题
字符串的长度问题,有两个方面的理解:
1,一个字符串有几个字符(人可见到的字符个数);
2,一个字符串占据多少个字节空间(人不可见);
几个常识:
a,1字节(B)就是8个bit位(最小的存储空间),1KB=1024B,1MB=1024KB,1GB=1024MB。。
b,一个英文字符占据1字节空间,gbk编码中1个汉字占据2个字节,utf8编码1个汉字占3字节。
求php字符串的长度,,有两个函数:
strlen(字符串):
求该字符串的“字节数”,也就是占据的字节空间大小;
mb_strlen(字符串):
求该字符串的“字符个数”。
image.png
该模块准确的位置如下:
image.png
使用phpinfo()函数没有找到php_mbstring这个函数,原因是PHP配置文件没有找到动态扩展库的位置
image.png
更改配置文件中加载扩展库的位置:
image.png
查看:
image.png
image.png
11.3. 常用字符串函数(重点)
·字符串输出:
echo: 输出一个或多个字符(不是函数,是语言结构)
print:输出一个字符串
print_r:输出变量的较为详细的信息
var_dump:输出变量的完整信息
·字符串去除与填充:
trim:消除一个字符串两端的空白字符或指定字符(空白字符包括:空格,\n, \r, \t等)
ltrim:消除一个字符串左边的空白字符或指定字符
rtrim:消除一个字符串右边的空白字符或指定字符
str_pad:将一个字符串使用指定的字符填充到指定的长度
image.png
·字符串连接与分割:
implode:将一个数组的值连接起来组成一个字符串
join:同implode
explode: 将一个字符串使用指定的字符分割为一个数组
str_split:将一个字符串按指定的长度分割为一个数组
image.png
·字符串截取:
字符串的位置、下标是从0开始的
substr:获取一个字符串中指定位置开始指定长度的子字符串
strstr:获取一个字符串中某个指定字符首次出现的位置起,到最后结尾处的字符 strstr(‘abcd.12.3.txt’, ‘.’); //结果是:”.12.3.txt”
strrchr:获取一个字符串中某个指定字符最后一次出现的位置起,到最后结尾处的字符 strrchr(‘abcd.12.3.txt’, ‘.’); //结果是:”.txt”
image.png
·字符串替换:
str_replace:将一个字符串中的指定字符,替换为给定的新字符。
image.png
image.png
substr_replace:将一个字符串中指定位置开始的指定个数的字符,替换为给定的新字符。
image.png
str_repeat: 重复输出某个字符串
image.png
image.png
·字符串位置:
strpos:获取一个字符串中某个子字符串首次出现的位置。 strpos(‘abcd.12.3.txt’, ‘.’); //结果是:4
strrpos:获取一个字符串中某个子字符串最后一次出现的位置。
strrpos(‘abcd.12.3.txt’, ‘.’); //结果是:9
strrpos(‘abcd.12.3.txt’, ‘cd’); //结果是:2
image.png
·字符转换:
strtolower:将一个字符串转换为小写。
strtoupper:将一个字符串转换为大写。
lcfirst:将一个字符串的首字母转换为小写。
ucfirst:将一个字符串的首字母转换为大写。
ucwords:将一个字符串中的所有单词的首字母转换大写。
·特殊字符处理:
nl2br:将换行符转换为”<br />”标签字符
addslashes: 将一个字符串中的以下几个字符使用反斜杠进行转义:\ ‘ “
htmlspecialchars:将html中的特殊字符转换为html实体字符,如下所示:
(& ‘ “ < > )分别转换为:((& ' " < > )
htmlspecialchars_decode:将html实体字符,转换回原本的字符。
image.png
案例:
取出如下若干个文件中的图片文件。
$files = [‘abc.gif’, ‘123.txt’, ‘dir1/gift.PNG’, ‘file1.JPG’, ‘gif动画制作教程.doc’ ];
12. 数组详解
(https://www.cs.usfca.edu/~galles/visualization/StackArray.html
)
12.1. 数组的概念和定义
数组,是指将若干数据按一定的顺序组合为一个整体。
每个数据被称为一个“单元”——数组单元。
每个单元由两部分构成:下标和值,下标也称为“键”(key),
数组的一个重要特点是:其中的数据有明确的顺序,而且,是其放入数组时的先后顺序。
数组有如下几种定义形式:
形式1:
$arr1 = array(单元1,单元2,...);
形式2:推荐
$arr2 = [单元1,单元2,...];
单元(元素)的形式为: [下标=>]值
形式3:(不推荐)
$arr3[下标1] = 值1;
$arr3[下标2] = 值2;
image.png
数据取值的语法形式:
$数组名[下标]; //其中,下标可以是整数的,也可以是字符串的(注意有引号)
image.png
访问所有元素的值
image.png
12.2.数组的分类
按照下标进行分类:
索引数组:下标都是整数的为索引数组(下标可以不写,默认是从0开始的,依次递增)
关联数组:下标都是字符串(字符串得加引号)
复合数组:下标既有整数,又有字符串(整数可以不写,字符串必须加引号,整数默认从0开始)
按照维数进行分类:
一维数组:数组里面的元素都是单个元素
二维数组:数组里面的元素的值又是一个一维数组
多维数组:数组里面又是数组,数组又是数组
注意:
//print_r()第二参数不加,默认为false,直接输出,如果加上true,直接把这个值保存起来不输出,转换成字符串
arr1,true);
echo $str;
12.21. 索引数组
通常是指一个数组的下标是从0开始的连续的整数。
举例1:
$arr1 = array(5, 8, 12, 2, 3);
$arr2 = [8, 22, 24, 22, 12];
$arr3[ ] = 8;
$arr3[ ] = 24;
$arr3[ ] = 22;
image.png
12.2.2. 关联数组
通常是指一个数组的下标都是字符串。
image.png
12.2.3. ** 混合数组**
下标既有字符串,也有整数
image.png
12.3. PHP数组的维数
按通常的数组元素的复杂程度,数组可以分为一维数组,二维数组,三维数组等等。
数组的元素的值可以重复,但是下标不能重复(下标具有唯一性), 如果重新给下标赋值,会覆盖掉原有的值
一维数组:
数组的每一个单元的值都是一个“非数组”值。
$arr1 = array(11, 12, 13, 14);
二维数组:
数组的每个单元的值都是一个“一维数组”。
$arr2 = array(
array(11, 12, 13),
array(21, 22, 23),
.....
);
三维数组:
数组的每个单元的值都是一个“二维数组”。
多维数组:
依此类推。。。。
image.png
12.4. 数组的遍历(重点)
12.4.1. 使用foreach语句遍历数组
遍历:就是对数组的每一项都“访问”到并进行所需要的数据处理。
foreach( $数组名 as [$key =>] $value){
//这里,$key和$value只是变量,它会在遍历数组的过程中,按顺序依次取得数组每个单元的下标和值。
echo “<br />{$key} >>> {$value} “;
}
一维数组:
二维数组:
image.png
演示案例1:
输出以下这个数组的每一项,求其平均值:
$arr1 = [11, 12, 13, 14];
image.png
演示案例2:
使用数组的遍历语法,求以下这个数组的最大值及其下标!
$arr2 = [11, 18, 21, 14, 8];
方式一:
方式二:(选择排序的思想)
假定一个值是最大值,循环出来的每一个值都跟最大值进行比较,如果大于最大值,此时给最大值重新赋予刚比较值,然后循环进行比较
image.png
12.4.2. 使用for循环语句遍历数组
注意:for循环一般仅针对索引数组(下标为整数且连续)
一维索引数组遍历:
image.png
二维索引数组遍历:
image.png
数组的指针:每一个数组内部,都有一个“指针”,正常情况下,指针指向数组的某个单元,起初默认是指向第一个单元。
对于数组 $arr1 = array( 18, 22, 13, 28, 15, 33, );
初始状态下,指针指向数组的第一个单元。
php中,有如下几个函数,可以针对数组指针进行相应操作:
$re = current( $arr1); //取得数组中当前指针所在单元的值;
$re = key( $arr1 ); //取得数组中当前指针所在单元的键(下标);
$re = next( $arr1 ); //将数组中的指针往后移动一个位置,并取得新位置上的值;
$re = prev( $arr1 ); //将数组中的指针往前移动一个位置,并取得新位置上的值;
$re = end( $arr1 ); //将数组中的指针移动到最后一个位置,并取得新位置上的值;
$re = reset($arr1); //将数组中的指针移动到最前一个位置,并取得新位置上的值;
image.png
课堂练习:
请用for来遍历如下数组,并按顺序输出其每一个单元的键和值:
$arr1 = array(‘a’, 2=>’b’, ‘c’, ‘x’=>’d’, ‘e’); //提示:count()函数可以求数组的长度
image.png
网友评论