博客列表 >数组排序、字符串处理截取替换学习—2018年08月27日22时

数组排序、字符串处理截取替换学习—2018年08月27日22时

小星的博客
小星的博客原创
2018年08月28日 17:40:35831浏览

今天是第十二天上课,朱老师讲了重点讲了数组排序和字符串的截取替换函数操作。

重要知识点:

1. 数组的排序:按值来排序:sort():升序;rsort():降序;usort():自定义排序

2. 按key键来排序:ksort():升序;krsort():降序;uksort():自定义排序

3. trim():清楚两边空格;ltrim():清楚左边空格;rtrim():清楚右边空格

4. str_pad():填充字符串

5. substr($str, $start, $length);//在$str取指定$start位置的$length长度的子串

6. strstr($str, $startstr, bool )//从字符为$startstr开始返回字符串,包括$startstr如果bool为true,则返回前面

7. strpos($str, $str, $start)//根据内容查询,返回字符串首次出现的位置,可以规定从何处开始查

8. str_replace()与substr_replace()

  1. 实例演示substr(),strstr(),strpos()函数

    代码:

    实例

    <?php
    header('Content-type:text/html;charset=utf-8');
    /**
     * 三个字符串子串查询操作
     */
    
    //以位置来查询子串
    //substr($str, $start, $length);//在$str取指定$start位置的$length长度的子串
    
    $str = 'nice to see you!!!';
    echo substr($str, 10),'<br>';
    echo substr($str, 10 ,4),'<br>';//查询从位置10开始4个长度的子串
    echo substr($str, -3),'<br>';//从字符串的尾部取三个
    
    //以字符来查询子串
    //strstr($str, $startstr, bool )//从字符为$startstr开始返回字符串,包括$startstr如果bool为true,则返回前面的
    
    $str = 'www.php.cn';
    echo strstr($str, 'p',true);
    
    //strpos($str, $str, $start)//根据内容查询,返回字符串首次出现的位置,可以规定从何处开始查询
    echo strpos($str, 'p');
    echo strpos($str, 'h',2);//从位置2开始查询字符串h,返回首次出现位置,不会因为2而变,只是让效率更高点

    运行实例 »

    点击 "运行实例" 按钮查看在线实例


  2. 实例演示str_replace(), substr_replace()

    代码:

    实例

    <?php
    /**
     * 字符串查找替换
     */
    $str = 'nice to meet you!!!';
    echo str_replace('to', 'too', $str),'<br>';
    echo str_replace('meet', '', $str),'<br>';
    
    echo str_replace( ['nice','to','meet'], 'you', $str),'<br>';//用一个代替多个
    echo str_replace( ['nice','to','meet'], ['Welcome','to','china'], $str),'<br>';//用数组对应的代替字符
    
    //str_ireplace();忽略大小写替换
    echo str_ireplace('To', 'OPoo', $str),'<br>';
    echo str_ireplace('meet', '', $str),'<br>';
    
    
    //substr_replace();
    echo substr_replace($str, 'welcome to china', 0),'<br>';//从0开始全部替换
    echo substr_replace($str, 'welcome to china', 4, 4),'<br>';//从4开始用wel..ina 替换掉4个字符
    echo substr_replace($str, 'welcome to china', 4, 0),'<br>';//插入
    echo substr_replace($str, '', 6, 5),'<br>';//从6开始删除6个字符

    运行实例 »

    点击 "运行实例" 按钮查看在线实例

  3. 实例演示: usort()二维数组的排序

    代码:

    实例

    <?php
    header('Content-type:text/html;charset=utf-8');
    /**
     * 数组的排序
     */
    $arr = [10,20,30,40,23,89,9];
    sort($arr);//自然排序
    echo '升序排列:'.var_export($arr,true),'<br>';//升序
    
    $arr = [10,20,30,40,23,89,9];//
    rsort($arr);//降序
    echo '降序排列:'.var_export($arr,true),'<br>';
    
    $arr = [10,20,30,40,23,89,9];
    usort($arr, function($var1, $var2){//这两个参数对应数组中相邻的两个数
        $res = $var1 - $var2;
        switch($res){
            case ($res < 0): return -1; break;
            case ($res > 0): return 1; break;
            case ($res == 0): return 0; break;
        }
    });//用户自定义排序  升序
    echo '自定义升序排列:'.var_export($arr,true).'<br>';
    
    //usort中函数返回值若是1,即返回true,就调换两个数,若是为0和负数,即返回false,则不调换
    
    usort($arr, function($var1, $var2){
        $res = $var1 - $var2;
        switch($res){
            case ($res < 0): return 1; break;
            case ($res > 0): return -1; break;
            case ($res == 0): return 0; break;
        }
    });//降序
    echo '自定义降序排序:'.var_export($arr,true).'<hr>';
    
    //usort()多维数组的排序
    $stu = [
        ['name' => 'a', 'grade' =>100],
        ['name' => 'b', 'grade' =>90],
        ['name' => 'c', 'grade' =>44],
        ['name' => 'd', 'grade' =>50],
        ['name' => 'e', 'grade' =>65],
        ['name' => 'f', 'grade' =>23],
    
    ];
    echo '<pre>';
    echo '排序前的数组是:',var_export($stu,true).'<br>';
    usort($stu, function($m, $n){
    //    return strcmp($m['grade'], $n['grade']);
        $res = $m['grade'] - $n['grade'];
        switch($res) {
            case ($res < 0):
                return -1;
                break;
            case ($res > 0):
                return 1;
                break;
            case ($res == 0):
                return 0;
                break;
        }
    });//按照grade来升序排列
    
    echo '按grade升序排列的数组是:',var_export($stu,true).'<hr>';
    usort($stu, function($m, $n){
        $res = $m['grade'] - $n['grade'];
        if($m['grade'] > 60 && $n['grade'] > 60  )
        {
            switch($res){
                case ($res < 0): return -1; break;
                case ($res > 0): return 1; break;
                case ($res == 0): return 0; break;
            }
        }
        if($m['grade'] < 60 && $n['grade'] < 60  )
        {
            switch($res){
                case ($res < 0): return 1; break;
                case ($res > 0): return -1; break;
                case ($res == 0): return 0; break;
            }
        }
    
    });//按照grade来升序排列
    echo '按照grade排列,大于60分的升序排,小于60分的降序排,所得数组是:',var_export($stu,true).'<hr>';
    
    
    $lang = ['name' => 'zmx', 'sex' => 'male', 'age' => 20];
    //根据数组的键来进行排序
    ksort($lang);//升序,更具根据键的首字母进行排序
    echo '按key升序排列:'.var_export($lang,true).'<hr>';
    krsort($lang);//降序
    echo '按key降序排列:'.var_export($lang,true).'<hr>';
    //自定义
    //根据键名的第三个字母进行排序
    $lang = ['name' => 'zmx', 'sex' => 'male', 'age' => 20];
    uksort($lang, function($m, $n){
        $a = substr($m,2,1);//取第三个字母
        $b = substr($n,2,1);
        return strcmp($a, $b);
    });
    echo '按key第三个字母升序排列:'.var_export($lang,true).'<hr>';

    运行实例 »

    点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议