Onkel Tom: Mehrdimensionales Array sortieren

Beitrag lesen

Hallo zusammen,

ich hab ein Problem mit dem Sortieren von einem grösseren Array, vielleicht kann mir ja jemand helfen...?

Also, das Array sieht so aus:

Array (  
    [telefon] => Array (  
            [0] => Array (  
                    [kontaktdatenTyp] => private  
                    [kontaktdatenKategorie] => festnetz  
                    [kontaktdaten] => +49.123.456789  
                )  
            [1] => Array (  
                    [kontaktdatenTyp] => business  
                    [kontaktdatenKategorie] => mobile  
                    [kontaktdaten] => +49.123.456789  
                )  
            [2] => Array (  
                    [kontaktdatenTyp] => business  
                    [kontaktdatenKategorie] => festnetz  
                    [kontaktdaten] => +49.123.456789  
                )  
            [3] => Array (  
                    [kontaktdatenTyp] => private  
                    [kontaktdatenKategorie] => mobile  
                    [kontaktdaten] => +49.123.456789  
                )  
            [4] => Array (  
                    [kontaktdatenTyp] => business  
                    [kontaktdatenKategorie] => festnetz  
                    [kontaktdaten] => +49.234.567890  
                )  
        )  
    [anschrift] => Array (  
            [0] => Array (  
                    [kontaktdatenTyp] => private  
                    [kontaktdatenKategorie] =>  
                    [kontaktdaten] => Koeln  
                )  
            [1] => Array (  
                    [kontaktdatenTyp] => business  
                    [kontaktdatenKategorie] =>  
                    [kontaktdaten] => Zuerich  
                )  
            [2] => Array (  
                    [kontaktdatenTyp] => business  
                    [kontaktdatenKategorie] =>  
                    [kontaktdaten] => Berlin  
                )  
            [3] => Array (  
                    [kontaktdatenTyp] => private  
                    [kontaktdatenKategorie] =>  
                    [kontaktdaten] => Bonn  
                )  
        )  
  
)

Und ich möchte nun die Daten in array('telefon') bzw. array('anschrift') wie folgt sortiert haben:

Array (  
    [telefon] => Array (  
            [0] => Array (  
                    [kontaktdatenTyp] => business  
                    [kontaktdatenKategorie] => festnetz  
                    [kontaktdaten] => +49.123.456789  
                )  
            [1] => Array (  
                    [kontaktdatenTyp] => business  
                    [kontaktdatenKategorie] => festnetz  
                    [kontaktdaten] => +49.234.567890  
                )  
            [2] => Array (  
                    [kontaktdatenTyp] => business  
                    [kontaktdatenKategorie] => mobile  
                    [kontaktdaten] => +49.123.456789  
                )  
            [3] => Array (  
                    [kontaktdatenTyp] => private  
                    [kontaktdatenKategorie] => festnetz  
                    [kontaktdaten] => +49.123.456789  
                )  
            [4] => Array (  
                    [kontaktdatenTyp] => private  
                    [kontaktdatenKategorie] => mobile  
                    [kontaktdaten] => +49.123.456789  
                )  
        )  
    [anschrift] => Array (  
            [0] => Array (  
                    [kontaktdatenTyp] => business  
                    [kontaktdatenKategorie] =>  
                    [kontaktdaten] => Berlin  
                )  
            [1] => Array (  
                    [kontaktdatenTyp] => business  
                    [kontaktdatenKategorie] =>  
                    [kontaktdaten] => Zuerich  
                )  
            [2] => Array (  
                    [kontaktdatenTyp] => private  
                    [kontaktdatenKategorie] =>  
                    [kontaktdaten] => Bonn  
                )  
            [3] => Array (  
                    [kontaktdatenTyp] => private  
                    [kontaktdatenKategorie] =>  
                    [kontaktdaten] => Koeln  
                )  
        )  
)

Also die einzelnen Arrays in telefon,anschrift zuerst nach kontaktdatenTyp, dann nach kontaktdatenKategorie und anschließend nach kontaktdaten. Mit usort habe ich es hinbekommen nach kontaktDatenTyp zu sortieren, aber nicht mehr... Hier mein bisheriger Code:

usort($array['telefon'], array("datenbankMySQLAdressbuch", "cmp"));  
  
public function cmp($a, $b) {  
  if (($a['kontaktdatenTyp'] == 'private') && ($b['kontaktdatenTyp'] == 'business')) {  
    return -1;  
  }  
  else if (($a['kontaktdatenTyp'] == 'business') && ($b['kontaktdatenTyp'] == 'private')) {  
  	return 1;  
  }  
  else {  
  	return 0;  
  }  
}

Hat irgendjemand eine Idee wie ich das realisieren kann? Bin für jeden Tip dankbar!

Gruss
Tom