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

PHP关联数组排序几种方法

对于普通数据排序我们直接使用系统自带数组排序函数即可,如果是关系数组排序你知道如何操作吧?下面来给各位整理了几个例子大家一起来看看吧。
参数说明:$data 目标数组 $key 排序字段, $sort 排序规则
 代码如下 复制代码
function getsortarray($data,$key,$sort='asc')
{
    if(!is_array($data))
    {
       return false;
    }
$len = count($data);
for($k=1; $k    {
      for($j=$len-1,$i=0;$i      {
        if(strtoupper($sort) == 'desc')
        {
           $flag = $data[$j][$key]>$data[$j-1][$key];
        }
        else
        {
           $flag = $data[$j][$key]        }
if($flag)
        {
          $tmp  = $data[$j];
          $data[$j]   = $data[$j-1];
          $data[$j-1] = $tmp;
        }
      }
    }
    return $data;
}
使用方法:
$a = array(
       array('name'=>'stone','age'=>17,'sex'=>'男'),
       array('name'=>'sunny','age'=>28),
       array('name'=>'grass','age'=>16,'sex'=>'女'),
       array('name'=>'sea','age'=>15,'birthday'=>'1987-08-16')
     );
print_r(getsortarray($a,'age','desc'));
结果:
array
(
   [0] => array
       (
           [name] => sunny
           [age] => 28
       )
[1] => array
       (
           [name] => stone
           [age] => 17
           [sex] => 男
       )
[2] => array
       (
           [name] => grass
           [age] => 16
           [sex] => 女
       )
[3] => array
       (
           [name] => sea
           [age] => 15
           [birthday] => 1987-08-16
       )
)
不知道你有没有看懂呢?没懂我们再看两个数组排序例子
要对数组针对age字段进行排序,php自带的简单sort功能函数,显然都不能满足需求,因此需要自己写一个快速排序代码来实现相应的需求。
 代码如下 复制代码

        ), 
        array( 
                'name' => 'wang', 
                'age' => 1 
        ), 
        array( 
                'name' => 'chen', 
                'age' => 2 
        ), 
        array( 
                'name' => 'zhengyi', 
                'age' => 4 
        ), 
        array( 
                'name' => 'chai', 
                'age' => 14 
        ) 
);
$begin = gettime(); 
quicksort($array, 0, count($array) - 1, 'age'); 
print_r($array); 
$end = gettime(); 
$spend = $end - $begin;
echo 花费时间为:.$spend.秒n;
function gettime() 

    list($msec, $sec) = explode( , microtime()); 
    return (float)$msec + (float)$sec; 
}
其它类似信息

推荐信息