Programmieren - alles kontrollieren 4.941 Themen, 20.708 Beiträge

Arrays in PHP sortieren (2D)

PingOfDeath / 4 Antworten / Baumansicht Nickles

Hallo, ich bekomm es einfach nicht hin mein Array zu sortieren!


$feiertageArray[12]['Heilig Abend']=(festefeiertage(24,12,$Jahr));


"festefeiertage" ist eine Funktion welche einen Timestamp zurück gibt.
Jetzt möchte ich dieses Array nach Datum (Timestamp) sortieren, das bekomm ich aber einfach nicht hin :-/

Jemand einen Tipp wie ich das hinbekomme?? (sort($array) ging nicht...)

Gruß, PingOfDeath

bei Antwort benachrichtigen
Borlander PingOfDeath „Arrays in PHP sortieren (2D)“
Optionen
Jetzt möchte ich dieses Array nach Datum (Timestamp) sortieren, das bekomm ich aber einfach nicht hin
Hm, innerhalb der einzelnen Monate? Also dann z.B, nur das Array $feiertageArray[12] und entsprechend für die anderen Monate. Wenn Du das sortieren möchtest, dann wird es wohl nicht reichen die Sortierfunktion mit dem äußeren Array auf zu rufen, die Funktion arbeitet AFAIR nicht rekursiv auf verschachtelten Arrays...

Gruß
Borlander
bei Antwort benachrichtigen
PingOfDeath Borlander „ Hm, innerhalb der einzelnen Monate? Also dann z.B, nur das Array feiertageArray...“
Optionen

Hi,

ich verstehe so langsam gar nichts mehr! Wenn ich ein zweidimensionales Array (TIMESTAMP / Feiertagsname) habe - steht dann der Feiertagsname in einem seperaten Array welches im ersten Array gespeichert ist????

Ich habe mir folgende Funtion geklaut:


function sortieren($array)
{
for ($i=0; $i {
foreach ($array[$i] as $key=>$value)
{
*HIER*
}
}
}


An der Stelle *HIER* würde ich jetzt selber gerne einen Bubblesort schreiben, allerdings kann ich das nicht weil ich u.a. folgendes nicht verstehe:

..... echo $value (an der Stelle *HIER*) gibt mir die ganzen Timestamps aus .... bei echo $key bekomme ich die Feiertagsnamen.
Aber: Wie greife ich innerhalb der Funktion auf verschiedene Werte zu?
Ich dachte an soetwas wie $array[i+1] etc. .... aber das klappt ja alles nicht.

Versteht mich einer :-D ?

PS: Mir scheint so als ist mir der Aufbau eines 2D-Arrays nicht ganz klar ....

Gruß, PingOfDeath

bei Antwort benachrichtigen
Borlander PingOfDeath „Hi, ich verstehe so langsam gar nichts mehr! Wenn ich ein zweidimensionales...“
Optionen
ich verstehe so langsam gar nichts mehr!
Ich bin mir auch nicht sicher, ob ich das ganze verstanden habe so wie Du Dir das vorstellst ;-)

Wenn ich ein zweidimensionales Array (TIMESTAMP / Feiertagsname) habe - steht dann der Feiertagsname in einem seperaten Array welches im ersten Array gespeichert ist????
Nein, das erste/äußere Array in deinem Posting ist $feiertageArray, zumindest unter dem Index 12 befindet sich dann ein weiters (diesmal assoziatives) Array mit der Zuordnung Feiertag=>Timestamp (und die willst Du sortieren, wenn ich das richtig verstanden habe?)...

Ich habe mir folgende Funtion geklaut:
An der Stelle *HIER* würde ich jetzt selber gerne einen Bubblesort schreiben

Hm, also ich sehe da erstmal absolut keinen Grund nicht auf (einer der vielen) Sortierfunktionen von PHP zurück zu greifen. Abgesehen davon: Für sowas was Du vorhast wäre array_walk(...) eigentlich genau das richtige

weil ich u.a. folgendes nicht verstehe:
..... echobild $value (an der Stelle *HIER*) gibt mir die ganzen Timestamps aus .... bei echo $key bekomme ich die Feiertagsnamen.

Ich muß gestehen, daß mir das Problem nicht ganz klar ist - du bekommst doch genau das raus was zu erwartet ist nachdem Du das Array in der oben gezeigten Form gefüllt hast?!

Aber: Wie greife ich innerhalb der Funktion auf verschiedene Werte zu?
Machst Du doch bereits wie Deine Experimente mit echo zeigen?

Ich dachte an soetwas wie $array[i+1] etc. .... aber das klappt ja alles nicht.
Um was zu erreichen?

Versteht mich einer :-D ?
Keine Ahnung, ich zumindest nur bedingt....

Mir scheint so als ist mir der Aufbau eines 2D-Arrays nicht ganz klar ....
Also eigentlich gibt es in PHP nur 1D-Arrays, diese kann man aber verschachteln und somit das selbe Erreichen wie mit 2D-Arrays, oder sogar noch mehr (die Inneren Arrays müssen nicht alle gleichlang sein, wie bei 2D-Arrays - was dann ja eine "Rechteckform" ergeben würde).
Zum Verschateln: Man nehme ein "großes" Array, und packe in jedes Feld wiederum ein "kleines" Array rein - eigentlich ganz einfach ;-)


Gruß
Borlander
bei Antwort benachrichtigen
xafford PingOfDeath „Arrays in PHP sortieren (2D)“
Optionen

Hast Du Dir schon einmal überlegt, ob nicht dein Konzept falsch ist, anstatt krampfhaft zu versuchen es zum laufen zu bekommen? Wenn Du Feiertage in ein Array packst, das Du nach Datum sortieren willst, dann wäre der sinnvollste Ansatz dieses Array nach Datum zu indizieren. Dan wäre Heilig Abend:

$feiertage[12][24]= "Heilig Abend";

Damit wär dein Array schon direkt sortiert.

Pauschalurteile sind immer falsch!!!
bei Antwort benachrichtigen