按日期对数组进行排序,然后按字母顺序排列,但要保持年表


Sorting an array by date, then alphabetically but keeping the chronology

我有两个独立的排序函数,可以按日期和字母顺序排序。然而,我需要以某种方式将这些结果组合起来,这样我就可以按年份对一系列结果进行排序,然后按当年的字母表进行排序。

有人知道如何做到这一点吗?

我当前的排序函数使用uasort,它们是:

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

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

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

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

只需将这些函数与所需的逻辑组合即可

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