我有如下所示的数据(最后排序),我需要对基于以下的行进行排序
元素由.分隔
edumate_3rdparty.20110209.1000.hourly.sql
edumate_3rdparty.20110209.0800.hourly.sql
edumate_3rdparty.20101209.Thursday.daily.sql
moodle_acots.20110130.1600.hourly.sql
moodle_acots.20110105.0800.hourly.sql
moodle_tara.20110316.1200.hourly.sql
moodle_tags.20110222.1000.hourly.sql
moodle_tags.20110208.1801.hourly.sql
moodle_will.20110302.1100.hourly.sql
moodle_wollo.20101031.October.4.weekly.sql我如何在php中做到这一点?
发布于 2011-04-05 03:49:09
下面是一个如何对数据集进行排序的示例。
<?php
$a=array();
$a[]=explode('.','edumate_3rdparty.20110209.1000.hourly.sql');
$a[]=explode('.','edumate_3rdparty.20110209.0800.hourly.sql');
$a[]=explode('.','edumate_3rdparty.20101209.Thursday.daily.sql');
$a[]=explode('.','moodle_acots.20110130.1600.hourly.sql');
$a[]=explode('.','moodle_acots.20110105.0800.hourly.sql');
$a[]=explode('.','moodle_tara.20110316.1200.hourly.sql');
$a[]=explode('.','moodle_tags.20110222.1000.hourly.sql');
$a[]=explode('.','moodle_tags.20110208.1801.hourly.sql');
$a[]=explode('.','moodle_will.20110302.1100.hourly.sql');
$a[]=explode('.','moodle_wollo.20101031.October.4.weekly.sql');
shuffle($a);
// all you need is this function
function special($a, $b){
if($a[0]!=$b[0])return strcmp($a[0],$b[0]);// asc
if($a[1]!=$b[1])return strcmp($b[1],$a[1]);// desc
return strcmp($b[2],$a[2]);// desc
}
usort($a,'special');
// and maybe the above call
echo'<pre>';
foreach($a as $id=>$value)
$a[$id]=implode('.',$a[$id]);
var_dump($a);
?>我用了保罗的爆炸想法来启动测试方案。所以大拇指取决于他:)
发布于 2011-04-05 03:41:16
首先,我将使用分解将数据生成一个数组。然后我将使用乌斯托对其进行排序。
usort使您能够为排序提供比较函数。
https://stackoverflow.com/questions/5546861
复制相似问题