Array sortieren

sidge

Grünschnabel
Hallo,
habe leider totale Probleme beim sortieren eines Arrays.

Folgendes Array bekomme ich nach einer Abfrage per mysql fetch array:

Array (
[0] => 1 [ID] => 1
[1] => admin [UserName] => admin
[2] => Bauer [Name] => Bauer
[3] => DE [Country] => DE
[4] => 1997 [Year] => 1997
[5] => [Doc_Link] =>
)

Array (
[0] => 2 [ID] => 2
[1] => paul [UserName] => paul
[2] => Schmidt[Name] => Schmidt
[3] => AT [Country] => AT
[4] => 1998 [Year] => 1998
[5] => [Doc_Link] =>
)


.... usw ...

Nun möchte ich allerdings gerne das Array nach einer Spalte sortieren, z.b. nach Name absteigend.

Habe es bereits per array_multisort probiert, funktioniert aber irgendwie nicht.


Folgendermaßen sieht mein Multisort aus:


$sortit=array();
foreach($meinarray as $key => $value)
{
$sortit[$key]=$value["name"];
}

array_multisort($sortit,SORT_ASC,SORT_STRING,$meinarray);


Kann mir da eventuell jemand helfen? Die Sortierung muss jedenfalls innerhalb des Arrays stattfinden, eine MySQL Sortierung per SELECT ORDER BY bringt mir leider nicht.

Ich danke euch!
 
Damit wollte ich eigentlich nur sagen, dass ich bei meinem Vorhaben eine Sortierung per MySQl SELECT nicht gebrauchen kann. Funktionieren tut diese natürlich einwandfrei, aber leider nicht von Nutzen. :(
 
Damit wollte ich eigentlich nur sagen, dass ich bei meinem Vorhaben eine Sortierung per MySQl SELECT nicht gebrauchen kann. Funktionieren tut diese natürlich einwandfrei, aber leider nicht von Nutzen. :(

Wer das jetzt versteht is echt gut...^^

Ne im ernst wieso sollte diese nicht von Nutzen sein?
Du erhälst ja das genau gleiche resultat... :confused:

bitte um Aufklärung :)

edit:

Ansonsten --> http://ch2.php.net/manual/de/function.sort.php
Da hat es noch etliche Links zu anderen Sortierfunktionen.
 
Zuletzt bearbeitet:
Es handelt sich dabei um eine Online-Datenbank die je nach Auswahl mit bestimmten Suchkritierien durchsucht wird.

Die Ergebnisse erhält der User dann in einer Liste. Das ganze ist per Session aufgebaut und man soll die Liste dann bei bestimmten Spalten auf/absteigend sortieren können.

Aus Trafficgründen will ich bei der Sortierungswahl natürlich kein neues Query starten, sondern direkt im erstellten Array sortieren.


Gruß
 
Auch wenn ich nicht verstehe, wieso du die Sortierung unbedingt mit PHP statt bequem direkt bei der Abfrage vorzunehmen, ist deinem Beispiel ganz einfach der Arrayschlüssel, anhand dem das zweidimensionale Array sortiert werden soll, falsch, da es „Name“ und nicht „name“ lauten muss.
 
Meiner Meinung nach ist MySQL äuserst schnell, weshalb ich es damit sortieren würde.
Kommt natürlich immer auf die anzahl Datensätze an...

Mit den obern geposteten Funktionen sollte dies Allerdings auch möglich sein...
Beachten musst du nur das das von der Datenbank erhaltene Array ein zweidimensionales ist.

Edit: zuu langsam^^
 
Zu HuRaHoRRe:
Die Datenbank besteht aus über 80.000 Datensätzen Tendenz steigend, daher sehe ich aus Trafficgründen und Performance lieber von einem erneuten Query ab.


Zu Gumbo:
----------------
"ist deinem Beispiel ganz einfach der Arrayschlüssel, anhand dem das zweidimensionale Array sortiert werden soll, falsch, da es „Name“ und nicht „name“ lauten muss."
-----------------
Habs geändert, funktioniert auch nicht. Habe es auch schon mit dem Schlüssel Year / Country versucht. Keine Reaktion, die Auflistung erfolgt lediglich immer absteigend anhand der ID bzw. Reihenfolge in der MySQL-DB.
 
Hi,

80.000 Datensätze sind grade bei einer einfachen SELECT / SORT Abfragen so gut wie nichts.

Dieses Forum hier hat über 1.000.000 Antworten. Dort wird auch bei jedem Seitenaufruf ein SELECT aus dieser Tabelle ausgeführt.

Würde mir echt überlegen, ob es hier Sinn macht auf diesen Luxus zu verzichten.

Der Fehler bei Deinem Beispiel dürfte bei der Erstellung des $sortit liegen.
Hast Du das mal mit print_r($sortit) ausgegeben?

Du frägst dort nach dem Namen in der ersten Dimension, Name existiert aber erst in der Zweiten. Also mußt Du 2 foreach verschachteln.

Gruß tyg3r
 
Wenn es bei 80k Datensätzen mit der Performance Probleme gibt, würde ich mal nachschauen, ob mit dem ERM der Datenbank alles in Ordnung ist und ob die Tabellen gscheit indexiert sind.
 
Zurück