美文网首页
第7天 PHP字符串、数组

第7天 PHP字符串、数组

作者: zphphp | 来源:发表于2019-10-31 17:55 被阅读0次

    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’ ];

    image.png

    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,直接把这个值保存起来不输出,转换成字符串
    str=print_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;
    
    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
    二维数组:
    image.png
    演示案例1:
    输出以下这个数组的每一项,求其平均值:
    $arr1 = [11,  12,  13,  14];
    
    image.png

    演示案例2:
    使用数组的遍历语法,求以下这个数组的最大值及其下标!

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

    方式一:

    image.png
    方式二:(选择排序的思想)
    假定一个值是最大值,循环出来的每一个值都跟最大值进行比较,如果大于最大值,此时给最大值重新赋予刚比较值,然后循环进行比较
    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

    相关文章

      网友评论

          本文标题:第7天 PHP字符串、数组

          本文链接:https://www.haomeiwen.com/subject/wwwtbctx.html