Blogger Information
Blog 48
fans 0
comment 0
visits 40755
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
数组排序、字符串处理截取替换学习—2018年08月27日22时
小星的博客
Original
832 people have browsed it

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

重要知识点:

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>';

    运行实例 »

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


Correction status:qualified

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments