我有一个数组:
$a = array("Freshman Spring" => 3, "Freshman Winter" => 2, "Freshman Summer" => 4, "Freshman Fall" => 1);
每个学年会有不同的数组,但没有数组会混合 fre、soph 等年份。
我的问题是我需要按照学校的季节(秋季、冬季、春季、夏季)对这个数组进行排序。我尝试使用 uksort 但我的代码实际上什么也没做,因为无论如何它都会以相同的方式排序。
function cmp($a, $b) {
$a = preg_replace('@^(freshman|sophomore|junior|senior) @', '', $a);
$b = preg_replace('@^(freshman|sophomore|junior|senior) @', '', $b);
return strcasecmp($a, $b);
}
uksort($a, "cmp");
我明白了:
Array
(
[Freshman Fall] => 1
[Freshman Spring] => 3
[Freshman Summer] => 4
[Freshman Winter] => 2
)
但需要得到这个:
Array
(
[Freshman Fall] => 1
[Freshman Winter] => 2
[Freshman Spring] => 3
[Freshman Summer] => 4
)
uksort 是要走的路吗?我做错了什么?请记住,数组值不会是那些值,它们将保存对象。非常感谢任何和所有帮助!