2014-01-20 13 views
5

Ich muss ein Array nach Werten sortieren, aber wenn Werte von Elementen gleich sind, muss ich ihre Schlüssel vergleichen und nach ihnen sortieren.PHP Sortiere ein Array mit uasort

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

Ich verstehe nicht, wie kann ich $ key_a und $ key_b Werte (Schlüssel von Elementen $ a und $ b) erhalten. Werte können gleich sein, Schlüssel nicht; Wie kann ich dieses Problem lösen?

Antwort

6

die folgenden Versuchen, die die uksort Funktion verwendet:

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

Wow ... schöne Code .. – mpyw

+0

Thanks a lot Mann, es funktioniert. – user2304996

+0

@ user2304996: Kein Problem! Denken Sie daran, [Ihre Frage als beantwortet zu markieren] (http://stackoverflow.com/help/someone-answers). –

Verwandte Themen