EisFuX: Verwendung von usort()

Beitrag lesen

(Hallo|Hi(i){0,4}(ho)|Howdy|Tag|Mahlzeit) sandy,

Ich habe ein Array:

$alle_links = array();
$alle_links[0]["url"] = $url;
$alle_links[0]["parent"] = "";
$alle_links[0]["status"] = "";


> Dieses möchte ich gerne nach "status" sortieren.  
  

> Falls das wichtig ist: Später wird der ganze Datensatz in ein anderes Array gespeichert:  
  
Nö, es sei denn, du willst denn derzeitigen Zustand des Arrays erhalten. Die Array-Sortierfunktionen von PHP erledigen ihre Arbeit  
"inplace", d.h. verändern die Reihenfolge der Einträge, im Gegensatz zu (bspw.) Perl, da wird eine sortierte Kopie erzeugt. Falls du das Array also im Originalzustand später noch benötigst, solltest du erst eine Kopie davon anlegen, bevor du die Sortierfunktion darauf loslässt.  
  

> Ich hab versucht, das mit usort() zu lösen, aber es funktioniert leider nicht! : (  
  
Und was genau hast du bisher unternommen?  
  
Falls du dein Beispiel-Array benutzt hast: Bei Arrays mit weniger als 2 Einträgen wirft usort() die benutzerdefinierte Vergleichsfunktion gar nicht erst an. Ist auch irgendwie sinnbefreit, Arrays mit einem oder keinem Eintrag sortieren zu wollen ... ;-)  
  
Irgendwie hab ich das dumpfe Gefühl, dass du meinen Vorschlag, [direkt in der Vergleichsfunktion mit var_dump() eines der zu vergleichenden Teil-Arrays anzuzeigen](https://forum.selfhtml.org/?t=187004&m=1242569), schon gelesen hast. Der würde auch hier funktionieren. Du bekämst eine Ausgabe, ähnlich wie die folgende:  
  

array(3) {
  ["url"]=> string(18) "irgendeine url"
  ["parent"]=> string(0) "irgendwas"
  ["status"]=> string(1) "irgendein status"
}

  
Und damit dürfte klar sein, auf welchen Schlüssel die benutzerdefinierte Vergleichsfunktion angewendet werden muss:  
~~~php
  
function ucompare($a, $b) {  
  strcmp($a['status'], $b['status']);  
}  
  
usort($alle_links, 'ucompare');  

Ich bin davon ausgegangen, dass es sich beim "status"-Feld um eine Zeichenkette handelt, daher die Verwendung von strcmp(). Das liefert auch gleich die richtigen Rückgabewerte. Wie die Rückgabewerte aussehen müssen, kannst du [linkhttp://php.net/manual/de/function.usort.php#function.usort.parameters@title=im PHP-Handbuch nachlesen]. Und wenn du schon mal auf der Seite bist, könntest du dir ganz unverbindlich das Code-Beispiel Nummer #2 für "multidimensionale" Arrays anschauen.

Kann mir biiiiitte jemand helfen?

5 x "i" -- soll die Anzahl der "i"'s in /bi+tte/ die Dringlichkeit anzeigen?

MffG
EiiiiisFuX