2014-01-20 24 views
5

我需要通过值对数组进行排序,但是如果元素的值相等,我需要比较它们的键并按它们排序。PHP使用uasort对数组进行排序

uasort($pages_arr, function($a, $b){ 
       if ($a == $b){ 
        return ($key_a < $key_b) ? -1 : 1; 
       } 
       return ($a < $b) ? -1 : 1; 
      }); 

我不明白,我怎么能得到$ key_a和$ key_b值(元素$ a和$ b的键)。值可以相同,键不是; 如何解决这个问题?

回答

6

尝试以下,它使用了uksort功能:

uksort($pages_arr, function($key_a, $key_b) use ($pages_arr) { 
    $a = $pages_arr[$key_a]; 
    $b = $pages_arr[$key_b]; 
    if ($a == $b) { 
     return ($key_a < $key_b) ? -1 : 1; 
    } 
    return ($a < $b) ? -1 : 1; 
}); 
+0

哇...美丽的代码.. – mpyw

+0

非常感谢的人,它的工作原理。 – user2304996

+0

@ user2304996:不是问题!请记住[将您的问题标记为已回答](http://stackoverflow.com/help/someone-answers)。 –