当前位置 博文首页 > 文章内容

    PHP常见数组排序方法小汇总

    作者:shunshunshun18 栏目:未分类 时间:2020-12-17 15:00:13

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    1.简单数组排序 sort() 函数和rsort() 函数:

    语法规则:

    bool sort(array &array [,int sort_flags]
    bool rsort(array &array [.int_sort_flags]

    参数:

      第一个参数是排序数组对象

      第二个参数是可以选的 可选值:

        SORT_REGULAR:是默认值,将自动识别数组的元素类型进行排序
        SORT_NUMERIC:用于数组元素排序
        SORT_STRING:用于字符串排序
        SORT_LOCALE_STRING:根据当前的locale设置来把元素当作字符串比较

    示例:

    $a=array(4,7,9,1);
    sort($a);
    pirnt_r($a);
    rsort($a);
    print_r($a);

    2.根据键名对数组排序

    定义: ksort() 函数按照键名对数组进行有小到大的排序。 krsort()ksort()函数相反,排序后为数组值保持原来的键。

    示例

    $data= array(5=>"five",8=>"eight",1=>"one",7=>"seven");
    ksrot($data);
    print_r($data);
    krsot($data);
    print_r($data);

    3.根据元素值排序

    定义 : asort() 从小到大 / arsort() 从大到小,用这个函数排序,原始键名将被忽略,使用依次数字重新索引数组下标

    示例 :

    $data=array("a"=>1,"b"=>2,"c"=>3);
    asort($data);
    print_r($data);
    arsort($data);
    print_r($data);

    4.自然排序

    定义 : 是个非常特殊的排序方式,这种方式使用认知而不是使用计算规则,这种特性称为——自然排序法,即数字从1到9,字母从a-z,短者优先。

    示例 :

    $data=array("file1.txt","file11.txt","file111.txt");
    natsort($data);//普通自然排序
    natcasesort($data);//忽略大小写

    5.根据用户自定义排序规则

    语法规则 :

    bool usort(array &array ,callback cmp_function)
    bool uasort(array &array,callback cmp_function)
    bool uksort(array &array,callback cmp_function)

    说明 : 自定义回调函数,需要两个参数,分别是数组两个连续元素,比较第一个参数小于,大于,等于第二个参数是分别返回 0,1,-1

    示例 :

    $data= array("ab","abc","a","ac","abcd");
    usrot($data,"mysortByLen");
    function mysortByLen($one,$two){
     if(strlen($one)== strlen($two)){
      return 0;
     }else{
     return (strlen($one)>strlen($two))?1:-1;
    }

    6.多维数组排序

    定义 : array_multisort()函数对多个数组排序,或者根据某一维或多维对多维数组排序。

    bool array_multisort(array array1 [,mixed arg,[,array ....]])

    示例:

    $data=array(
      array("id"=>1,"name"=>4),
      array("id"=>1,"name"=>2),
      array("id"=>2,"name"=>3)
    );
    foreach($data as $key=>$value){
     $ids[$key]=$value["id"];
     $names[$key]=$value["name"]
    }
    array_multisort($data,$ids,$names);
    print_r($data);

    输出结果:

    array(    array("id"=>1,"name"=>2),    array("id"=>1,"name"=>4),    array("id"=>2,"name"=>3)
     );

    推荐:《》