【PHP基础】二维数组排序
2014-06-09 14:02
351 查看
自己编写排序函数
自己编写排序函数来解决,排序函数。这里函数使用我之前一片文章里的快排函数
【php基础】php数组常用操作函数
quikSort($data, 0, count($data)-1);
借用array_multisort
对二维数组排序,排序依据是数组中的一维例如:
//对一下数组排序,排序按time字段升序排列 $data = array( array( 'age' => 20, 'sex' => 'male', 'time' => 1234 ), array( 'age' => 20, 'sex' => 'female', 'time' => 1387 ), array( 'age' => 20, 'sex' => 'female', 'time' => 1236 ), ...... )
这里需要先生成一个助手数组
$tmpArr = array( 1234, 1387, 1236, ...... )
然后使用array_multisort($tmpArr, SORT_ASC, $data)来排序
$tmpArr = array(); foreach($data as $one){ $tmpArr[] = $one['time']; } array_multisort($tmpArr, SORT_ASC, $data);
借用ksot
和方法二的要求类似但是借用ksort排序时,排序所依据的那一维上值不能重复,而且数组一维上键值没办法保留
首先将排序所依据的那一维上的值赋给数组一维的键,然后使用ksort排序:
foreach($data as $key => $value){ $data[$value['time']] = $value; unset($data[$key]); } ksort($data);
生成待排序数组的代码
$data = array(); for($i=0;$i<59999;$i++){ $tmp = array(); $tmp['age'] = mt_rand(1,120); $tmp['sex'] = array_rand(array('male', 'female')); $tmp['time'] = mt_rand(10000, 99999); $data[] = $tmp; }
时间对比
三者的时间对比[运行20次]:array_multisort
平均: 0.18119
最小: 0.144434928894
最大: 0.234122991562
quickSort()
平均: 1.40006
最小: 1.25567817688
最大: 1.54849505424
ksort
平均: 0.13638
最小: 0.113926887512
最大: 0.176182031631
柱状图
相关文章推荐
- PHP注入基础
- PHP、MySQL最基础的教程
- PHP 和 MySQL 基础教程(四)
- php基础知识:类与对象(5) static
- php基础知识:类与对象(1)
- php基础知识:类与对象(4) 范围解析操作符(::)
- PHP 和 MySQL 基础教程(三)
- PHP 和 MySQL 基础教程(三)
- PHP 和 MySQL 基础教程(四)
- 以文本文件为基础的PHP搜索引擎
- PHP 和 MySQL 基础教程(三)
- Eclipse基础--plugin插件安装(from: http://www.eclipseworld.org/bbs/read.php?tid=136)
- 面向对象的PHP开发框架FCS教程[1] 框架基础
- PHP 和 MySQL 基础教程(四)
- PHP 和 MySQL 基础教程(一)
- PHP 和 MySQL 基础教程(三)
- PHP 和 MySQL 基础教程(二)
- PHP 和 MySQL 基础教程(二)
- php基础知识:类与对象(2) 自动加载对象
- php基础知识:函数基础知识