Php 实现多维数组排序的方法

一月 09
磊子 2012年 4 条评论

很早之前看过一篇数组排序的文章,今天在做thinkphp项目要用到的时候却找不着了,于是又去网上狂搜,然后整理了一下,赶紧记下免得以后又忘了。

<?php

function sysSortArray($ArrayData,$KeyName1,$SortOrder1 = "SORT_ASC",$SortType1 = "SORT_REGULAR")
{
    if(!is_array($ArrayData))  //判断传递的参数是不是数组
    {
        return $ArrayData;
    }

    // 得到参数传递过来的编号number
    $ArgCount = func_num_args();

    for($I = 1;$I < $ArgCount;$I ++)
    {
        $Arg = func_get_arg($I);
        if(!eregi("SORT",$Arg))
        {
            $KeyNameList[] = $Arg;
            $SortRule[]    = '$'.$Arg;
        }
        else
        {
            $SortRule[]    = $Arg;
        }
    }

    // 根据得到的关键字key和值value,将他们的重新组合成数组.
    foreach($ArrayData AS $Key => $Info)
    {
        foreach($KeyNameList AS $KeyName)
        {
            ${$KeyName}[$Key] = $Info[$KeyName];
        }
    }

    // 通过eval进行输出.
    $EvalString = 'array_multisort('.join(",",$SortRule).',$ArrayData);';
    eval ($EvalString);
    return $ArrayData;
}

//例子
$arr = array(
    array(
        'username'  =>   '小强',
        'age'       =>   '25',
        'nicename'  =>   'xq',
    ),
    array(
        'username'  =>   '小龙',
        'age'       =>   '18',
        'nicename'  =>   'egg',

    ),
    array(
        'username'  =>   '美女',
        'age'       =>   '35',
        'nicename'  =>   'calla',

    ),

);

//分别按照username和age和nicename进行排序。
$temp = sysSortArray($arr,"name","SORT_ASC","type","SORT_DESC",
"size","SORT_ASC","SORT_STRING");

print_r($temp);

?>

使用这个方法主要的核心函数是array_multisort(),大家感兴趣的可以去了解下。这个方法主要是用在未涉及数据库时使用。还有一点就是php有个函数是uasort()自定义比较函数对数组排序。

» 版权所有©转载必须以链接形式注明作者和原始出处:磊子的博客 » Php 实现多维数组排序的方法
» 地址:( Ctrl+C 复制 )
» 如果对本站感兴趣,请到网站右下方订阅本站,将为你带来更多精彩和实用的文章
» 如果您对这篇文章感兴趣,不妨小小的 捐助(Donate)一下博主吧,不管多少都是对博主最大的支持和鼓励哟,博主-磊子感谢大家的支持!!!

4 条留言 其中:访客:2 条, 博主:2 条

  1. 很太吧说:

    2012年1月10号很太吧到此一游,站点样式不错

  2. 商盟网说:

    又来拜访了,希望能够回访一下!

说点什么吧




wireless earbuds moscow mule mugs bluetooth speakers waterproof camera best wireless earbuds best vacuum cleaner best drugstore foundation best dishwasher best waist trainer wireless headphones best vacuum 0594918 best bluetooth earbuds waterproof bluetooth speaker tattoo cover up action camera
订阅本站