2Dimensionale Arrays sortieren

Hallo,
Wie kann ich ein 2 dimensionales Arra nach einem Element des "Unterarrays" sortieren??

z.B. ein Array
$Daten[$i][$j]
wie kann ich das so sortieren, dass nach $Daten[$i][0] sortiert wird???

Das Array mit dem höchsten $Daten[$i][0] sollte als erstes kommen.
$Daten[2][höchstes]
$Daten[7][2.höchstes]
$Daten[4][3.höchstes]

Ich weiss, das ist umständlich und schlecht beschrieben, aber ich weiss nicht, wie ich´s sonst noch beschreiben kann.

thx im Voraus
Noob
 
Schreibe mal 10 oder 20 beispiele... ich brauch was handfestes um zu helfen. danke!
 
ok, hier mal ein paar beispiele
das hier
$Daten[0][0]=1
$Daten[0][1]="Hallo"
$Daten[0][2]="Test"
$Daten[1][0]=4
$Daten[1][1]="Nochmals Hallo"
$Daten[1][2]="Wieder Test"
$Daten[2][0]=3
$Daten[2][1]="bla"
$Daten[2][2]="bla"
$Daten[3][0]=2
$Daten[3][1]="blabla"
$Daten[3][2]="blabla"

sollte zu
$Daten[0][0]=1
$Daten[0][1]="Hallo"
$Daten[0][2]="Test"$
$Daten[1][0]=2
$Daten[1][1]="blabla"
$Daten[1][2]="blabla"
$Daten[2][0]=3
$Daten[2][1]="bla"
$Daten[2][2]="bla"
$Daten[3][0]=4
$Daten[3][1]="Nochmals Hallo"
$Daten[3][2]="Wieder Test"

sortiert werden.
 
vergiss es! da könnte man eine funktion schreiben. aber da kommst du nicht so einfach bei weg. Das is echt hammer. habe das mal angefangen, aber da ich keinen sinn darin sehe, lasse ich es :)
sorry!
 
wenn du wenigstens das ding so sortieren wolltest dass an stelle 00 das erste ist , an stelle 01 das 2. usw..

aber 00 > 04 > 07 .. der algorithmus ist sch*****

CU

WaTchME
 
Ich glaub ich weiss schon, was ich in den Sommerferien machen werde. In 80 Tagen durch´s Array.
Da PHP C eh einigermassen ähnlich ist, hab ich wenigstens mit der Sprache keine Probleme.

mfg
Noob
 
@niedriger noob

Also...zweidimenionale Arrays sortieren ist nicht wirklich kompliziert...
So wie ich das sehe willst Du das in php machen...

Also gehen wir mal von Zahlen aus...

Nehmen wir mal an das Array sieht so aus..

array[3][4] {{ 8, 7, 6, 5}
{ 4, 3, 2, 2}
{ 9, 8, 7, 1}}

Und nehmen wir weiter an das Du die 9 rechts unten, und die 1 links oben haben moechtest. und zwar erst horizontal und dann vertikal..also so

array[3][4]{{ 1, 2, 2, 3}
{ 4, 5, 6, 7}
{ 7, 8, 8, 9}}


Der weg ist folgender...

- Du duchsuchst das Array nach der niedrigsten Zahl...also der 1.
Und das horizontal...- wenn Du eine gefunden hast dann kopierst Du sie an (nach Deinem
System) an die ersten Stelle Deines Arrays..also array[1][1].- VORHER musst Du allerdings die Variable (oder-was-auch-immer)
mit der Du tauschen wirst ( also mit der 8 an array[1][1]) kurzfristig
in eine zusatzvariable packen..da sonst (hier die 8) die Variable
ja ueberschrieben wird..
- danach kopierts Du die 8 dorthin, wo vorher die 1 war.
- zusaetzlich deklarierst Du Dir eine Variable die als eine Art "Merker"
funktioniert...d.h. wenn Du die erste niedrigste ZAhl vertauscht hast
musst Du sie von array[1][1] auf [1][2] setzen..
Wenn Du so das Array durchlaufen hast, suchst Du nach der naechst-
hoeheren Zahl..also der 2 und verfaehrst genauso...

Das einzig wichtige ist dabei das Dein "Merker" immer, wenn Du eine Zahl vertauscht hast einen hochgezaehlt wird...
wenn Du mit Deinem Merker bei array[1][4] angelangt bist, dann wird er (logischerweise, wenn Du etwas dorhin kopiert hast) auf [2][1] gesetzt...

Vermutlich hast Du aber auch Text in Deinem Array..neben Zahlen oder auch nur Text....da musst Du schauen ob es in PHP Funktionen gibt mit denen Du "lexikographisch" Text vergleichen kannst..

also ob AAA hoeher oder niedriger ist als CCC....
so..thats the way...
viel spass beim "basteln"..

btw: wenn Du eine Loesung in C haben willst dann kann ich Dir eine mailen...

:wq!
 
@seht
Ja
erstmal thx für die Antwort, aber
Es sollte nicht
array[3][4]{{ 1, 2, 2, 3}
{ 4, 5, 6, 7}
{ 7, 8, 8, 9}}
rauskommen sondern
array[3][4]{
{ 9,8,7,1}
{ 8,7,6,5}
{ 4,3,2,2}} .

Es soll nur nach dem ersten Element sortiert werden, sonst ist ja die ganze 2. Dimension durcheinander. Aber ich denke dank deines Postings hab ist mir eine Idee gekommen wie ich das machen könnte. Ich nehme als Merker ein 1D-Array.
1) Suche nach dem höchsten $Daten[$1][0]. Das ist noch einfach.
2) Kopieren von Daten[0][0-4(oder wieviele es halt hat)] in den Merker.
3) Kopieren des höchsen gefundenen $Daten[$1][0-4] an $Daten[0][0-4]. Kopieren des Markers an die Position des gefundenen. Der Zähler springt jetzt auf $Daten[1][0-4] weiter, das erste Arrayelement ist ja schon das Höchste und darf nicht mehr in der Suche nach dem höchsten einbezogen werden.
4) Jetzt geht das ganze Spiel von vorne los, wieder suchen des Höchsten $Daten[$i][0], in den Merker u,s,w

Ich werd das in den Sommerferien mal ausprobieren, sollte eigentlich in 2 Monaten zu schaffen sein.

mfg
Noob
 
Zurück
Oben