【发布时间】:2012-06-19 11:28:25
【问题描述】:
只是想知道是否有人可以将这个 usortMonths() 函数优化得更好?基本上我有一个未排序的月份数组,$bob,我希望它们按月份排序,而不是按字母顺序。
代码运行良好,但这是我第一次使用 uSort,我不介意是否有人可以提出任何改进建议?
function usortMonths($a, $b) {
$months = array('JANUARY','FEBRUARY','MARCH','APRIL','MAY','JUNE','JULY','AUGUST','SEPTEMBER','OCTOBER','NOVEMBER','DECEMBER');
$key = array(0 => 0,1 => 0,2 => FALSE, 3 => FALSE);
if(array_search(strtoupper($a),$months)!==FALSE) {
$key[0] = array_search(strtoupper($a),$months);
$key[2] = TRUE; }
if(array_search(strtoupper($b),$months)!==FALSE) {
$key[1] = array_search(strtoupper($b),$months);
$key[3] = TRUE; }
if($key[2] && $key[3]){
if($key[0] < $key[1]) {return -1;}
if($key[0] == $key[1]){return 0;}
if($key[0] > $key[1]) {return 1;}
}
}
$bob = array('april','august','december','february','January','july','june','march','may','november','october','september',);
usort($bob,"usortMonths");
var_dump($bob);
【问题讨论】:
-
代替
<code>-tags,使用4个空格的缩进使文本显示为代码。如果您需要缩进一个大块,您只需选择该文本并点击{}按钮。 -
@Wrikken 谢谢 - 以后我会记住的! :)
-
我会将月份替换为月份编号,然后进行比较。现在,您正在通过数组引用将月份转换为数字版本,以进行每次比较。您要处理的数组大小是多少?顺便说一句:这更像是代码审查 (codereview.stackexchange.com) 的问题,而不是 stackoverflow 的问题。
-
@Arend,是的,但那肯定涉及更改输入数组,我不能这样做。而且我什至不知道代码审查 - 对不起!