2012-03-26 2 views
0

Ich habe ein Array, das wie diese (Probe) aussieht:uksort durch mehr Array-Elemente

Array 
(
    [1600] => Array 
     (
      [country] => Canada 
      [memTypeID] => 10 
     ) 

    [1601] => Array 
     (
      [country] => United States 
      [memTypeID] => 7 
     ) 

    [1602] => Array 
     (
      [country] => Canada 
      [memTypeID] => 9 
     ) 
) 

muß ich nach Land sortieren und dann memTypeID, während der Array Schlüssel zu bewahren (in PHP). Ich glaube, ich muss Uksort verwenden, da usort die Array-Schlüssel neu schreibt. Ich weiß, wie man eine einfache Vergleichsfunktion für ein Array-Element erstellt, aber ich weiß nicht, wie ich mit zwei umgehen kann.

Das resultierende Array sollte sein:

Array 
(
    [1602] => Array 
     (
      [country] => Canada 
      [memTypeID] => 9 
     ) 
    [1600] => Array 
     (
      [country] => Canada 
      [memTypeID] => 10 
     ) 

    [1601] => Array 
     (
      [country] => United States 
      [memTypeID] => 7 
     ) 


) 

Antwort

1
function cmp($a, $b) { 
    if(strcmp($a['country'],$b['country']) != 0) { 
     return $a['country'] > $b['country'] ? 1 : -1; 
    } 
    return $a['memTypeID'] > $b['memTypeID'] ? 1 : -1; 
} 

uasort($a, "cmp"); 
+0

das richtig mit usort sortiert, aber nicht den Array-Schlüssel erhalten. Wenn ich den Uksort für Usort vertausche, ist die Sortierung verloren. – lcdservices

+0

behoben, überprüfen Sie erneut, verwenden Sie mit 'uasort' – safarov

+0

danke - hat super funktioniert – lcdservices

Verwandte Themen