ebody: Assoziatives, mehrdimensionales Array sortieren

Beitrag lesen

Hallo,

ich hoffe "Assoziatives, mehrdimensionales Array" ist für dieses Array die richtige Bezeichnung?

Um zu verstehen, wie man ein solches Array sortieren kann, verwende ich ein kleines, grobes Beispiel Array. Es soll nach der Marke (alphabetisch aufsteigend) sortiert werden und die Schlüssel der Marke, also die Modelle sollen ebenfalls (alphabetisch aufsteigend) sortiert werden.

Aktuelles Array:

$autos = array(
    "Porsche" => array(						// Marke
			"911 Blau" => array(				// Modell
				"Farbe" => "Blau",
				"Preis" => "70.000"
			),
			"Cayenne Schwarz" => array(	//Modell
				"Farbe" => "Schwarz",
				"Preis" => "80.000"
			)
		),
    "Dacia" => array(							// Marke
			"Logan Blau" => array(			//Modell
				"Farbe" => "Blau",
				"Preis" => "10.000"
			),
			"Logan Schwarz" => array(		//Modell
				"Farbe" => "Schwarz",
				"Preis" => "12.000"
			),		
			"Duster Blau"  => array(		//Modell
				"Farbe" => "Blau",
				"Preis" => "10.000"
			)
		)
);

So soll es nach der Sortierung aussehen:

$autos = array(
    "Dacia" => array(							// Marke
			"Duster Blau"  => array(		//Modell
				"Farbe" => "Blau",
				"Preis" => "10.000"
			),			
			"Logan Blau" => array(			//Modell
				"Farbe" => "Blau",
				"Preis" => "10.000"
			),
			"Logan Schwarz" => array(		//Modell
				"Farbe" => "Schwarz",
				"Preis" => "12.000"
			)		
		),
    "Porsche" => array(						// Marke
			"911 Blau" => array(				// Modell
				"Farbe" => "Blau",
				"Preis" => "70.000"
			),
			"Cayenne Schwarz" => array(	//Modell
				"Farbe" => "Schwarz",
				"Preis" => "80.000"
			)
		)
);

Ich wollte array_multisort() verwenden, aber in dem Beispiel...

array_multisort($ar[0], SORT_ASC, SORT_STRING,
                $ar[1], SORT_NUMERIC, SORT_DESC);

...wird auf das jeweilige Array mit einer Zahl zugegriffen. Die Schlüssel in dem Beispiel Array sind aber "Namen". Geht man davon aus, dass das Array noch viel größer wird und verschiedene Namen enthält, wüsste ich jetzt nicht wie man mit array_multisort() darauf zugreifen kann.

Kann mir jemand auf die Sprünge helfen?

Gruß ebody