php7 数组与字符串,第7天 PHP字符串、数组

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

4b0e7cd9a152

image.png

1、单引号不能解析变量,双引号能够解析变量(变量不要加引号解析)

2、使用{}代替字符串和变量连接

4b0e7cd9a152

image.png

1.1.3. heredoc字符串

形式:$s1 = <<

这里写字符内容,可以多行写

标识符;

特点:

1,特点跟双引号字符串一样!

注意:

标识符结束那一行,只能出现标识符及紧挨着的分号,任何其他字符都不可以出现。

4b0e7cd9a152

image.png

11.1.4. nowdoc字符串

形式:$s1 = <<

这里写字符内容,可以多行写

标识符;

特点:无特点,是最“纯净”的字符串,写什么就是什么。

heredoc字符串,和nowdoc字符串,适用于表达(描述)一大段内容的字符串,特别是适合于写html部分的代码(含js,css等)。

如下:

4b0e7cd9a152

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(字符串):

求该字符串的“字符个数”。

4b0e7cd9a152

image.png

该模块准确的位置如下:

4b0e7cd9a152

image.png

使用phpinfo()函数没有找到php_mbstring这个函数,原因是PHP配置文件没有找到动态扩展库的位置

4b0e7cd9a152

image.png

更改配置文件中加载扩展库的位置:

4b0e7cd9a152

image.png

查看:

4b0e7cd9a152

image.png

4b0e7cd9a152

image.png

11.3. 常用字符串函数(重点)

·字符串输出:

echo: 输出一个或多个字符(不是函数,是语言结构)

print:输出一个字符串

print_r:输出变量的较为详细的信息

var_dump:输出变量的完整信息

·字符串去除与填充:

trim:消除一个字符串两端的空白字符或指定字符(空白字符包括:空格,\n, \r, \t等)

ltrim:消除一个字符串左边的空白字符或指定字符

rtrim:消除一个字符串右边的空白字符或指定字符

str_pad:将一个字符串使用指定的字符填充到指定的长度

4b0e7cd9a152

image.png

·字符串连接与分割:

implode:将一个数组的值连接起来组成一个字符串

join:同implode

explode: 将一个字符串使用指定的字符分割为一个数组

str_split:将一个字符串按指定的长度分割为一个数组

4b0e7cd9a152

image.png

·字符串截取:

字符串的位置、下标是从0开始的

substr:获取一个字符串中指定位置开始指定长度的子字符串

strstr:获取一个字符串中某个指定字符首次出现的位置起,到最后结尾处的字符 strstr(‘abcd.12.3.txt’, ‘.’); //结果是:”.12.3.txt”

strrchr:获取一个字符串中某个指定字符最后一次出现的位置起,到最后结尾处的字符 strrchr(‘abcd.12.3.txt’, ‘.’); //结果是:”.txt”

4b0e7cd9a152

image.png

·字符串替换:

str_replace:将一个字符串中的指定字符,替换为给定的新字符。

4b0e7cd9a152

image.png

4b0e7cd9a152

image.png

substr_replace:将一个字符串中指定位置开始的指定个数的字符,替换为给定的新字符。

4b0e7cd9a152

image.png

str_repeat: 重复输出某个字符串

4b0e7cd9a152

image.png

4b0e7cd9a152

image.png

·字符串位置:

strpos:获取一个字符串中某个子字符串首次出现的位置。 strpos(‘abcd.12.3.txt’, ‘.’); //结果是:4

strrpos:获取一个字符串中某个子字符串最后一次出现的位置。

strrpos(‘abcd.12.3.txt’, ‘.’); //结果是:9

strrpos(‘abcd.12.3.txt’, ‘cd’); //结果是:2

4b0e7cd9a152

image.png

·字符转换:

strtolower:将一个字符串转换为小写。

strtoupper:将一个字符串转换为大写。

lcfirst:将一个字符串的首字母转换为小写。

ucfirst:将一个字符串的首字母转换为大写。

ucwords:将一个字符串中的所有单词的首字母转换大写。

·特殊字符处理:

nl2br:将换行符转换为”
”标签字符

addslashes: 将一个字符串中的以下几个字符使用反斜杠进行转义:\ ‘ “

htmlspecialchars:将html中的特殊字符转换为html实体字符,如下所示:

(& ‘ “ < > )分别转换为:((& ' " < > )

htmlspecialchars_decode:将html实体字符,转换回原本的字符。

4b0e7cd9a152

image.png

案例:

取出如下若干个文件中的图片文件。

$files = [‘abc.gif’, ‘123.txt’, ‘dir1/gift.PNG’, ‘file1.JPG’, ‘gif动画制作教程.doc’ ];

4b0e7cd9a152

image.png

12. 数组详解

12.1. 数组的概念和定义

数组,是指将若干数据按一定的顺序组合为一个整体。

每个数据被称为一个“单元”——数组单元。

每个单元由两部分构成:下标和值,下标也称为“键”(key),

数组的一个重要特点是:其中的数据有明确的顺序,而且,是其放入数组时的先后顺序。

数组有如下几种定义形式:

形式1:

$arr1 = array(单元1,单元2,...);

形式2:推荐

$arr2 = [单元1,单元2,...];

单元(元素)的形式为: [下标=>]值

形式3:(不推荐)

$arr3[下标1] = 值1;

$arr3[下标2] = 值2;

4b0e7cd9a152

image.png

数据取值的语法形式:

$数组名[下标]; //其中,下标可以是整数的,也可以是字符串的(注意有引号)

4b0e7cd9a152

image.png

访问所有元素的值

4b0e7cd9a152

image.png

12.2.数组的分类

按照下标进行分类:

索引数组:下标都是整数的为索引数组(下标可以不写,默认是从0开始的,依次递增)

关联数组:下标都是字符串(字符串得加引号)

复合数组:下标既有整数,又有字符串(整数可以不写,字符串必须加引号,整数默认从0开始)

按照维数进行分类:

一维数组:数组里面的元素都是单个元素

二维数组:数组里面的元素的值又是一个一维数组

多维数组:数组里面又是数组,数组又是数组

注意:

//print_r()第二参数不加,默认为false,直接输出,如果加上true,直接把这个值保存起来不输出,转换成字符串

math?formula=str%3Dprint_r(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;

4b0e7cd9a152

image.png

12.2.2. 关联数组

通常是指一个数组的下标都是字符串。

4b0e7cd9a152

image.png

12.2.3. ** 混合数组**

下标既有字符串,也有整数

4b0e7cd9a152

image.png

12.3. PHP数组的维数

按通常的数组元素的复杂程度,数组可以分为一维数组,二维数组,三维数组等等。

数组的元素的值可以重复,但是下标不能重复(下标具有唯一性), 如果重新给下标赋值,会覆盖掉原有的值

一维数组:

数组的每一个单元的值都是一个“非数组”值。

$arr1 = array(11, 12, 13, 14);

二维数组:

数组的每个单元的值都是一个“一维数组”。

$arr2 = array(

array(11, 12, 13),

array(21, 22, 23),

.....

);

三维数组:

数组的每个单元的值都是一个“二维数组”。

多维数组:

依此类推。。。。

4b0e7cd9a152

image.png

12.4. 数组的遍历(重点)

12.4.1. 使用foreach语句遍历数组

遍历:就是对数组的每一项都“访问”到并进行所需要的数据处理。

foreach( $数组名 as [$key =>] $value){

//这里,$key和$value只是变量,它会在遍历数组的过程中,按顺序依次取得数组每个单元的下标和值。

echo “
{$key} >>> {$value} “;

}

一维数组:

4b0e7cd9a152

image.png

二维数组:

4b0e7cd9a152

image.png

演示案例1:

输出以下这个数组的每一项,求其平均值:

$arr1 = [11, 12, 13, 14];

4b0e7cd9a152

image.png

演示案例2:

使用数组的遍历语法,求以下这个数组的最大值及其下标!

$arr2 = [11, 18, 21, 14, 8];

方式一:

4b0e7cd9a152

image.png

方式二:(选择排序的思想)

假定一个值是最大值,循环出来的每一个值都跟最大值进行比较,如果大于最大值,此时给最大值重新赋予刚比较值,然后循环进行比较

4b0e7cd9a152

image.png

12.4.2. 使用for循环语句遍历数组

注意:for循环一般仅针对索引数组(下标为整数且连续)

一维索引数组遍历:

4b0e7cd9a152

image.png

二维索引数组遍历:

4b0e7cd9a152

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); //将数组中的指针移动到最前一个位置,并取得新位置上的值;

4b0e7cd9a152

image.png

课堂练习:

请用for来遍历如下数组,并按顺序输出其每一个单元的键和值:

$arr1 = array(‘a’, 2=>’b’, ‘c’, ‘x’=>’d’, ‘e’); //提示:count()函数可以求数组的长度

4b0e7cd9a152

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值