11. 字符串详解

  11.1. 4种不同形式的字符串

  11.1.1. 单引号字符串

  形式: $s1=‘字符串内容’

  特点:

  只能使用2个转义符:

  ‘ “ \(代表一个反斜杠) \’(代表一个单引号)

  通常,如果没有其他特殊需求(比如字符串中使用一些转义符,以及一些变量),则推荐使用单引号字符串。!不能解析变量

  11.1.2. 双引号字符串

  形式: $s1=“字符串内容”

  特点:

  1,能使用较为丰富的转义符,包括:\\ \”

  \r \$等

  :代表“换行符”(就是一个新行)

  \r :代表“回车符”(其实也是一个新行)

  :代表“tab符”,

  $v1=10;

  echo “结果为:$v1”; //输出内容为: 结果为:10

  echo “结果为:\$v1”; //输出内容为: 结果为:$v1

  php字符串输出数组_php字符串输出数组

  image.png

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

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

  php字符串输出数组_php字符串输出数组

  image.png

  1.1.3. heredoc字符串

  形式:$s1=<<

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

  标识符;

  特点:

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

  注意:

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

  php字符串输出数组_php字符串输出数组

  image.png

  11.1.4. nowdoc字符串

  形式:$s1=<<

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

  标识符;

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

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

  如下:

  php字符串输出数组_php字符串输出数组

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

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

  php字符串输出数组_php字符串输出数组

  image.png

  该模块准确的位置如下:

  php字符串输出数组_php字符串输出数组

  image.png

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

  php字符串输出数组_php字符串输出数组

  image.png

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

  php字符串输出数组_php字符串输出数组

  image.png

  查看:

  php字符串输出数组_php字符串输出数组

  image.png

  php字符串输出数组_php字符串输出数组

  image.png

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

  ・字符串输出:

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

  print:输出一个字符串

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

  var_dump:输出变量的完整信息

  ・字符串去除与填充:

  trim:消除一个字符串两端的空白字符或指定字符(空白字符包括:空格,

  , \r, 等)

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

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

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

  php字符串输出数组_php字符串输出数组

  image.png

  ・字符串连接与分割:

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

  join:同implode

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

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

  php字符串输出数组_php字符串输出数组

  image.png

  ・字符串截取:

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

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

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

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

  php字符串输出数组_php字符串输出数组

  image.png

  ・字符串替换:

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

  php字符串输出数组_php字符串输出数组

  image.png

  php字符串输出数组_php字符串输出数组

  image.png

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

  php字符串输出数组_php字符串输出数组

  image.png

  str_repeat: 重复输出某个字符串

  php字符串输出数组_php字符串输出数组

  image.png

  php字符串输出数组_php字符串输出数组

  image.png

  ・字符串位置:

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

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

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

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

  php字符串输出数组_php字符串输出数组

  image.png

  ・字符转换:

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

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

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

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

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

  ・特殊字符处理:

  nl2br:将换行符转换为”

  ”标签字符

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

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

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

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

  php字符串输出数组_php字符串输出数组

  image.png

  案例:

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

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

  php字符串输出数组_php字符串输出数组

  image.png

  12. 数组详解

  12.1. 数组的概念和定义

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

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

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

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

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

  形式1:

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

  形式2:推荐

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

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

  形式3:(不推荐)

  $arr3[下标1]=值1;

  $arr3[下标2]=值2;

  php字符串输出数组_php字符串输出数组

  image.png

  数据取值的语法形式:

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

  php字符串输出数组_php字符串输出数组

  image.png

  访问所有元素的值

  php字符串输出数组_php字符串输出数组

  image.png

  12.2.数组的分类

  按照下标进行分类:

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

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

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

  按照维数进行分类:

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

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

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

  注意:

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

  php字符串输出数组_php字符串输出数组_25arr1,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;

  php字符串输出数组_php字符串输出数组

  image.png

  12.2.2. 关联数组

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

  php字符串输出数组_php字符串输出数组

  image.png

  12.2.3. ** 混合数组**

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

  php字符串输出数组_php字符串输出数组

  image.png

  12.3. PHP数组的维数

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

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

  一维数组:

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

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

  二维数组:

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

  $arr2=array(

  array(11, 12, 13),

  array(21, 22, 23),

  .....

  );

  三维数组:

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

  多维数组:

  依此类推。。。。

  php字符串输出数组_php字符串输出数组

  image.png

  12.4. 数组的遍历(重点)

  12.4.1. 使用foreach语句遍历数组

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

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

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

  echo “

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

  }

  一维数组:

  php字符串输出数组_php字符串输出数组

  image.png

  二维数组:

  php字符串输出数组_php字符串输出数组

  image.png

  演示案例1:

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

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

  php字符串输出数组_php字符串输出数组

  image.png

  演示案例2:

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

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

  方式一:

  php字符串输出数组_php字符串输出数组

  image.png

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

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

  php字符串输出数组_php字符串输出数组

  image.png

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

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

  一维索引数组遍历:

  php字符串输出数组_php字符串输出数组

  image.png

  二维索引数组遍历:

  php字符串输出数组_php字符串输出数组

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

  php字符串输出数组_php字符串输出数组

  image.png

  课堂练习:

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

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

  php字符串输出数组_php字符串输出数组

  image.png