Mehrdimensionales Array sortieren Schlüssel erhalten
Sahra
- php
Hi,
wie mache ich aus
Array
(
[2] => Array
(
[contenttype] => passwd
[content] => Passwort
[position] => 2
)
[4] => Array
(
[contenttype] => email
[content] => E-Mail
[position] => 1
)
[5] => Array
(
[contenttype] => server
[content] => Serverauswahl
[position] => 3
)
)
Ein Array das die Schlüssel erhält aber den Email Eintrag zu erst hat?
Bis dann
Sahra
Hallo,
Array
(
[2] => Array
(
[contenttype] => passwd
[content] => Passwort
[position] => 2
)[4] => Array
(
[contenttype] => email
[content] => E-Mail
[position] => 1
)[5] => Array
(
[contenttype] => server
[content] => Serverauswahl
[position] => 3
))
Ich gehe davon aus, dass Dein gewünschtes Ergebnis in etwa wie folgt aussieht:
array(3) {
[4]=>
array(3) {
["contenttype"]=>
string(5) "email"
["content"]=>
string(6) "E-Mail"
["position"]=>
int(1)
}
[2]=>
array(3) {
["contenttype"]=>
string(6) "passwd"
["content"]=>
string(8) "Passwort"
["position"]=>
int(2)
}
[5]=>
array(3) {
["contenttype"]=>
string(6) "server"
["content"]=>
string(13) "Serverauswahl"
["position"]=>
int(3)
}
}
Ein Array das die Schlüssel erhält aber den Email Eintrag zu erst hat?
Als erstes lohnt sich stets ein Blick in das Handbuch, dass eine Vergleichsübersicht über das Sortieren von Arrays bietet.
Deine Anforderungen sind:
a) die Sortierung erfolgt nach dem Wert (speziell dem Inhalt von contenttype)
b) die Schlüssel müssen erhalten bleiben, auch wenn sie numerisch sind
c) die Sortierung soll aufsteigend erfolgen
Dadurch scheiden schon einmal die meisten Funktionen aus, es bleiben
- asort
- natcasesort
- natsort
- uasort
asort ist nicht geeignet, weil Du keine einfachen Werte hast, sondern Arrays als Wert und Du nach einem bestimmten Arrayelement sortieren willst.
Der spezielle Anwendungsfall von natsort und natcasesort ist nicht das, was Du willst, also bleibt
Alles, was Du noch brauchst, ist die benutzerspezifische Vergleichsfunktion. Wenn Du nur PHP 5.3.0 und höher unterstützen brauchst, dann bietet es sich an, dafür eine Lambda-Funktion zu nutzen:
# Wir nutzen eine anonyme Funktion, die bei zwei übergebenen Werten
# die assoziative Arrays mit dem Schlüssel 'contenttype' sein müssen
# genau die Werte in den Arrayelementen mit diesem Schlüssel vergleicht.
# strcmp() liefert genau die Werte zurück, wie sie die benutzerspezifische
# Vergleichsfunktion zurückgeben muss.
$sort = function($a, $b) {
return [link:http://de.php.net/manual/de/function.strcmp.php@title=strcmp]($a['contenttype'], $b['contenttype']);
};
# Nehmen wir an, Dein Array ist in der Variablen $myArray enthalten,
# so kannst Du dieses Array nun mit uasort sortieren:
$success = uasort($myArray, $sort);
# Kontrollausgabe
var_dump($myArray);
liefert bei Deinen Daten das gewünschte Ergebnis.
Freundliche Grüße
Vinzenz
Hallo Vinzenz,
lieben Dank. Ich werde es versuchen.
Danke
Sahra
Mega!!!!
Geht, rockt und ist supi dupi
Liebsten Gruß
S