按日期排序数组,然后按字母顺序排序,但保持年表

时间:2013-11-21 20:07:52

标签: php arrays sorting

我有两个独立的排序函数,可以按日期和字母顺序排序。但是,我需要以某种方式将这些组合在一起,以便我可以按年份对结果数组进行排序,然后在该年内按字母表排序。

有人知道如何实现这一目标吗?

我当前的排序函数使用uasort并且是:

function job_year_sort($x, $y)
{
return ($x['YearCompleted'] < $y['YearCompleted']);
 }

function name_sort($x, $y)
{
return strcasecmp($x['ProjectName'], $y['ProjectName']);
}

2 个答案:

答案 0 :(得分:2)

也许这个会按年份排序,然后按名称排序:

function job_year_name_sort($x, $y)
{
    if ( $x['YearCompleted'] == $y['YearCompleted'] ) {
        return strcasecmp($x['ProjectName'], $y['ProjectName']);
    }
    else {
        return $x['YearCompleted'] - $y['YearCompleted'];
    }
 }

答案 1 :(得分:1)

只需将这些功能与所需的逻辑

组合在一起
function year_name_sort($x, $y) {
    if ($x['YearCompleted'] == $y['YearCompleted'])
        return name_sort($x, $y);
    return job_year_sort($x, $y);
}