Home | Registrieren | Einloggen | Suchen | Aktuelles


Forum » PHP & MySQL » array_multisort Problem oder Antworten
array_multisort Problem oder

bastir
Mausakrobat


Beiträge: 150


Hallo,

ich habe heute mal ein Problem, bei dem ich ein mehrdimensionales Array nach bestimmten Werten sortieren möchte. Im php-manual und bei google gibt es auch lösungsansätze, wobei es mir noch nicht gelungen ist, daß ganze auf mein Problem zu portieren.

Ich habe wie gesagt ein Array wie folgendes:
1: 
2: 
3: 
4:
Array ( 
[1] => Array ( [from] => xyz [to] => zyx [date] => 1000000000)
[2] => Array ( [from] => foo [to] => bar [date] => 3000000000)
[3] => Array ( [from] => didel [to] => dei [date] => 2000000000))


Ich möchte nun, daß die Array-Einträge absteigend nach den Werten von [date] sortiert werden.

Am Ende sollte es dann also wie folgt aufgebaut sein:
1: 
2: 
3: 
4: 
5:
Array ( 
[2] => Array ( [from] => foo [to] => bar [date] => 3000000000)
[3] => Array ( [from] => didel [to] => dei [date] => 2000000000)
[1] => Array ( [from] => xyz [to] => zyx [date] => 1000000000)
)

Könnt ihr mir dabei helfen?

so long


---
Man kann nicht alles wissen, man muß nur wissen wo es steht!

Diese Nachricht wurde geändert von: bastir
  Profil   Website   Editieren   Zitieren

Pat-ro
Pixelschubser


Beiträge: 3


Du könntest folgenden Lösungsansatz wählen:

1. Du zählst die einträge in dem Mehrdimensionalen Array
2. Du erstellst eine For Schleife und fügst folgenden Inhalt ein:
1. Du fügst alle eintraege in dem jetzigen Array zu einem String zusammen (Mit einem bestimmten trennzeichen) Bsp: $k_v = "from.to.date"
2. Du fügst die Variable in ein neues Array hinzu
3. Du sortierst das neu entstandene Array mit sort
4. Nun machst du wieder eine for Schleife die das ganze wieder in eine Mehrdimensionales Array zerlegt

MfG
Pat-ro

  Profil   E-Mail   Editieren   Zitieren

Philipp Gérard
Foren-Team


Beiträge: 1508


Die bekommst du doch per SQL, oder?

---
Arbeit ist das Feuer der Gestaltung. - Marx

Diese Nachricht wurde geändert von: Philipp Gérard
  Profil   E-Mail   Website   Editieren   Zitieren

bastir
Mausakrobat


Beiträge: 150


Nein die Daten bekomme ich per pop3-sock Verbindung (bastel an nem webmail Frontend)

so long

---
Man kann nicht alles wissen, man muß nur wissen wo es steht!

  Profil   Website   Editieren   Zitieren

bastir
Mausakrobat


Beiträge: 150


Kennt keiner eine Lösung mit der array_multisort() Funktionm mit der es angeblich ja möglich sein soll, solche Probleme zu lösen, "nur wie"?

Ansonsten werde ich wahrscheinlich die oben genannte lösung nehmen müssen, vielen Dank erstmal dafür!

so long

---
Man kann nicht alles wissen, man muß nur wissen wo es steht!

  Profil   Website   Editieren   Zitieren

einstein
Quasselstrippe


Beiträge: 241


Es gibt en masse Kommentare dazu auf php.net

Du könntest ohne Probleme obigen Code auf folgendes Beispiel portieren
After a long search, I have finally found the way to a sort mulit-dimensional array by one of its columns.

If you have the following array:
$data_array["FirstName"][0] = "John";
$data_array["FirstName"][1] = "Marta";
$data_array["FirstName"][2] = "Trent";
$data_array["LastName"][0] = "Lin";
$data_array["LastName"][1] = "Tremblay";
$data_array["LastName"][2] = "Nguyen";
$data_array["Extension"][0] = 5555;
$data_array["Extension"][1] = 2222;
$data_array["Extension"][2] = 3333;

and wanted to sort by the column, "Extension", in ascending order to output the following:

FirstName LastName Extension
Marta Tremblay 2222
Trent Nguyen 3333
John Lin 5555

use:

1:
array_multisort($data_array["Extension"], SORT_NUMERIC, SORT_ASC, $data_array["FirstName"],$data_array["LastName"]);


Note: If you have more columns, list them at the end.

  Profil   Editieren   Zitieren

NetDrag
Foren-Team


Beiträge: 461


Das Problem ist daß daß date an 3. stelle im Array steht, Wenn du date an die erste stelle verschieben kannst funktioniert ein array sort.

---
We are born wet, naked and hungry, then things got worse!

  Profil   Website   Editieren   Zitieren
 

Antworten
Nach oben