您好,欢迎访问一九零五行业门户网

php 多维数组的排序实现代码

本文章给大家整一个php 多维数组的排序实现代码,我们在实际编码中将会用到php函数array_multisort()来实现这一复杂的排序,有需要了解的朋友可参考。
如数组
 代码如下 复制代码
array
(
   [0] => array
       (
           [id] => 1146
           [orderid] => 3
       )
   [1] => array
       (
           [id] => 1149
           [orderid] => 2
       )
   [2] => array
       (
           [id] => 170
           [orderid] => 4
       )
   [3] => array
       (
           [id] => 1121
           [orderid] => 3
       )
   [4] => array
       (
           [id] => 1120
           [orderid] => 7
       )
)
这么一个数据,想按orderid来排序。找不到内置的php函数,网上搜索了下,发现如下方法:
 代码如下 复制代码
$asc_func  =  create_function('$a,$b',' 
$k  =  orderid;
if($a[$k]  ==  $b[$k])  return  0; 
return  $a[$k]>$b[$k]?1:-1; 
'); 
usort($arrs,$asc_func);
$arrs是原数组,$k=orderid是要排序的字段
后来对上面代码进行了升级
 代码如下 复制代码
function syssortarray($arraydata,$keyname1,$sortorder1 = sort_asc,$sorttype1 = sort_regular)
{
    if(!is_array($arraydata))
    {
        return $arraydata;
    }
    // get args number.
    $argcount = func_num_args();
    // get keys to sort by and put them to sortrule array.
    for($i = 1;$i     {
        $arg = func_get_arg($i);
        if(!eregi(sort,$arg))
        {
            $keynamelist[] = $arg;
            $sortrule[]    = '$'.$arg;
        }
        else
        {
            $sortrule[]    = $arg;
        }
    }
    // get the values according to the keys and put them to array.
    foreach($arraydata as $key => $info)
    {
        foreach($keynamelist as $keyname)
        {
            ${$keyname}[$key] = $info[$keyname];
        }
    }
    // create the eval string and eval it.
    $evalstring = 'array_multisort('.join(,,$sortrule).',$arraydata);';
    eval ($evalstring);
    return $arraydata;
}
其它类似信息

推荐信息