PHP uSort 优化?

标签 php usort

只是想知道是否有人可以优化这个 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);

最佳答案

这个怎么样?

function usortMonths($a, $b) {
    $months = array('JANUARY','FEBRUARY','MARCH','APRIL','MAY','JUNE','JULY','AUGUST','SEPTEMBER','OCTOBER','NOVEMBER','DECEMBER');
    return array_search(strtoupper($a), $months) - array_search(strtoupper($b), $months);
}

关于PHP uSort 优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11099999/

相关文章:

PHP : Post get method, 需要一些建议

PHP的USORT回调函数参数

php - 无法访问 usort() 函数调用内部的全局变量

javascript - 如何从特定行获取数据?

Javascript 和 PHP 扫描裸体

php - 如何使用dompdf设置pdf的自定义宽度和高度?

php - 在 php 中,usort() 函数如何工作

PHP多维数组(usort)

php - 如何从 PHP 中的 json 响应中回显特定值