美文网首页
数组相关处理函数2

数组相关处理函数2

作者: 刘宇龙 | 来源:发表于2016-09-29 10:59 被阅读0次

    冒泡排序法

    <?php
    
    $arr=array(0,1,23,34,4,5,56,7,8,69);
    //从小到大
    function mysort(&$arr){
      $len=count($arr);
      for($i=0;$i<$len-1;$i++){
        for($j=0;$j<$len-$i-1;$j++){
          if($arr[$j]<$arr[$j+1]){
            $tmp=$arr[$j];
            $arr[$j]=$arr[$j+1];
            $arr[$j+1]=$tmp;
          }
        }
      }
    }
    mysort($arr);
    print_r($arr);
    //从大到小
    function mysort(&$arr){
      $len=count($arr);
      for($i=0;$i<$len-1;$i++){
        for($j=0;$j<$len-$i-1;$j++){
          if($arr[$j]>$arr[$j+1]){
            $tmp=$arr[$j];
            $arr[$j]=$arr[$j+1];
            $arr[$j+1]=$tmp;
          }
        }
      }
    }
    mysort($arr);
    print_r($arr);
    

    快速排序法

    <?php
    //快速排序法,原理为二叉树
    $arr=array(20,18,40,65,78,4,66,34,87,98,5,64,45);
    
    function qsort($arr){
      if(!is_array($arr) || empty($arr))
        return array();
      //获取数组的长度
      $len=count($arr);
      //如果数组中只有一个元素,直接返回这个数组
      if($len <=1)
        return $arr;
      $key[0] =$arr[0];
      $left =array();
      $right=array();
    
      for($i =1;$i<$len;$i++){
        if($arr[$i] <=$key[0]){
          $left[]=$arr[$i];
        }else{
          $right[]=$arr[$i];
        }
      }
      $left=qsort($left);
      $right=qsort($right);
    
      return array_merge($left,$key,$right);
    }
    
    print_r($arr);
    echo '<br>';
    
    print_r(qsort($arr));
    

    数组排序函数

    <?php
    
    // sort -- 对数组排序(升序)
    // rsort -- 对数组逆向排序(降序)
    // ksort -- 对数组按照键名排序
    // krsort -- 对数组按照键名逆向排序
    // asort -- 对数组进行排序并保持索引关系(关联数组排序)
    // arsort --  对数组进行逆向排序并保持索引关系
    // natsort --  用“自然排序”算法对数组排序
    // natcasesort --  用“自然排序”算法对数组进行不区分大小写字母的排序
    // usort --  使用用户自定义的比较函数对数组中的值进行排序
    // uasort --  使用用户自定义的比较函数对数组中的值进行排序并保持索引关联
    // uksort --  使用用户自定义的比较函数对数组中的键名进行排序
    // array_multisort -- 对多个数组或多维数组进行排序
    
    //sort排序可以对数字、字母进行排序,原数组有键名排序后不保存
    //sort 数字升序排序
    $arr=array(1,3,4,2,6,7,5,9,8,0);
    
    print_r($arr);
    echo '<br>';
    
    sort($arr);
    
    print_r($arr);
    echo '<br>';
    
    //rsort 数字降序排序
    
    rsort($arr);
    
    print_r($arr);
    echo '<br>';
    
    //sort 字母升序排序
    $arra=array("one","two","three","four","five");
    
    print_r($arra);
    echo '<br>';
    
    sort($arra);
    
    print_r($arra);
    echo '<br>';
    //sort 字母降序排序
    
    rsort($arra);
    
    print_r($arra);
    echo '<br>';
    

    ksort 对数组按照键名排序

    krsort 键名降序排序

    asort 对数组进行排序并保持索引关系

    arsort 降序排序

    <?php
    
    //ksort 对数组按照键名排序
    //ksort 键名升序排序
    $lamp =array(1=>"Linux",10=>"Apache",35=>"Mysql",20=>"PHP");
    
    print_r($lamp);
    echo '<br>';
    
    ksort($lamp);
    print_r($lamp);
    echo '<br>';
    
    //krsort 键名降序排序
    krsort($lamp);
    print_r($lamp);
    echo '<br>';
    //asort 对数组进行排序并保持索引关系
    //asort 升序排序
    $la =array("l"=>"Linux","m"=>"Apache","a"=>"Mysql","p"=>"PHP");
    print_r($la);
    echo '<br>';
    
    asort($la);
    print_r($la);
    echo '<br>';
    //arsort 降序排序
    arsort($la);
    print_r($la);
    echo '<br>';
    

    natsort 用自然排序算法对数组排序

    natcasesort 用自然排序算法对数组进行不区分大小写字母的排序

    usort 使用用户自定义的比较函数对数组中的值进行排序

    uasort可以保留原有键值名

    <?php
    //natsort 用自然排序算法对数组排序 如果有大写,大写的在前面
    $arr=array("file12.txt","file.txt","file2.txt","file1.txt","file11.txt");
    
    print_r($arr);
    echo '<br>';
    
    natsort($arr);
    
    print_r($arr);
    echo '<br>';
    //natcasesort 用自然排序算法对数组进行不区分大小写字母的排序
    $arrr=array("FILE12.TXT","file.txt","file2.txt","file1.txt","file11.txt");
    
    natcasesort($arrr);
    
    print_r($arrr);
    echo '<br>';
    //usort 使用用户自定义的比较函数对数组中的值进行排序
    //按字符串从短到长排序,用uasort可以保留原有键值名
    $sz=array("#########","####","######","##");
    usort($sz,function($a,$b){
      $alen=strlen($a);
      $blen=strlen($b);
      if($alen>$blen){
        return 1;
      }else if($alen<$blen){
        return -1;
      }else{
        return 0;
      }
    });
    print_r($sz);
    

    array_multisort -- 对多个数组或多维数组进行排序

    <?php
    
    // array_multisort -- 对多个数组或多维数组进行排序
    $a = array("a", 10, "b", 10);
        $b = array(1,   4,   3,  2);
    
        array_multisort($a,SORT_DESC, $b, SORT_DESC);
    
        print_r($a);  // a b 10 20
        echo '<br>';
        print_r($b);  //1  3  4  2
    
    //对多维数组某一关键字进行排序,次序排序
    $data = array(
    
                array("id"=>1, "name"=>"aa", "age"=>10),
                array("id"=>2, "name"=>"ww", "age"=>30),
                array("id"=>3, "name"=>"cc", "age"=>30),
                array("id"=>4, "name"=>"dd", "age"=>"40")
    
            );
    
    
        $ages = array();
        $names = array();
        foreach($data as $value) {
            $ages[] = $value['age'];
            $names[] = $value['name'];
        }
    
    
    
    
        array_multisort($ages,SORT_DESC , $names, SORT_DESC ,$data);
    
        echo '<pre>';
        print_r($data);
        echo '</pre>';
    

    数组拆分、合并

          <?php
            $arr = array("a", "b", "c", "d", "e");
    
            $narr = array_slice($arr, -3, 2, true);
    
            print_r($narr);
    
            array_splice($arr, -3, 2, array("hello", "world"));
    
            print_r( $arr );
    
            $a = array("os", "webserver", "db", "language", "html");
            $b = array("linux", "apache", "mysql", "php");
    
            $narr = array_combine($a, $b);
    
            print_r( $narr );
    

    相关文章

      网友评论

          本文标题:数组相关处理函数2

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