Hallo ich habe ein Formular,
in dem Tag , Monat und Jahr als Zahl übergeben werden.
Die Namen der Elemente in dem Formular sind.
starttime[2] , starttime[1] , starttime[0]
In PHP entsteht dann ein ARRAY starttime
implode ( $starttime , ‚‘ )
und
$starttime_guessed[0].$starttime_guessed[1].$starttime_guessed[2]
liefern aber andere Ergebnisse.
implode ist genau verdreht.
Die Eingabe von 17.03.1973
liefert implode als 1703173
und die andere Variante als 19730317, was ich brauche, weil ich ein Timestamp daraus machen will.
wenn element 2 das jahr, in 1 der mon und in 0 der tag gespeichert sind, und sich weiterhin diese reihenfolge niocht aendern laesst, wuerde ich schauen, ob
krsort
das ergebnis in gewuenschter art und weise korrigiert… ob das wesentlich eleganter ist, sei dahin gestellt…
im uebrigen sidn die argumente der funktion implode in deinem beispiel vertauscht, wie mir scheint…
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
Hi
Danke, dann werde ich halt krsort verwenden. Ist eigentlich wirklich eine gute Möglichkeit )
Aber da hat du was nicht ganz verstanden:
im uebrigen sidn die argumente der funktion implode in deinem
beispiel vertauscht, wie mir scheint…
Ja genau das ist ja das Problem.
implode vertauscht normalerweise keine Elemente.
Hat es aber getan !
Das ist mir in meinen 2 Jahren PHP erfahrung mit implode noch nie passiert.
Das hängt irgendwie mit der optischen Elementreihenfolge auf der HTML-Seite zusammen.
Verstehtst du jetzt ?
Schau noch mal hier:
Die Namen der Elemente in dem Formular sind.
> > starttime[2] , starttime[1] , starttime[0]
das entspricht
Tag , Monat , Jahr.
Und schau noch mal hier:
implode ist genau verdreht.
Die Eingabe von 17.03.1973
liefert implode als 1703173
und die andere Variante als 19730317
obwohl in starttime[0] 17 und nicht 1973 steht.
Alle klar ? Vielleicht glaubst du mir nicht, aber es ist so.
dieses snippet:
$starttime[0]= ‚17‘;
$starttime[1]= ‚03‘;
$starttime[2]= ‚1973‘;
print implode(’’,$starttime);
wird immer:
17031973 ausgeben…
Natürlich wird das immer 17031973 ausgeben.
Klar. Das weiss ich seit 2 Jahren.
Dies ändert sich aber sobald du das mit einem Formular der folgenden Art machst:
Die Namen der Elemente in dem Formular sind
starttime[2] , starttime[1] , starttime[0]
das entspricht Tag , Monat , Jahr.
Für mich wäre da naheliegend
das
$starttime[2]= ‚17‘;
$starttime[1]= ‚03‘;
$starttime[0]= ‚1973‘;
sind.
Damit müsste
echo implode(’’,$starttime) 19730317 ergeben.
es ergibt jedoch immer 17031973 .
Komischerweise ergibt jedoch
print $starttime[0] 1973 und nicht 17 .
Vielleicht ist für PHP $starttime[0] gar kein ARRAY Element sondern nur ein Forumular- Element.
Es ist echt seltsam.
Offensichtlich macht PHP irgendwas bei der übergabe. Oder die Variablen kommen anders an.
Deshalb sagte ich auch:
Das hängt irgendwie mit der optischen Elementreihenfolge auf der HTML-Seite zusammen.
Verstehtst du jetzt ?
implode( array_reverse( $starttime_guessed ) , ‚‘ )
rückt das dann wieder richtig.
Ich hoffe nur das das dann auch immer so bleibt, weil mir fehlt schlieslich die Erklärung.
Vielleicht ist es ein PHP-Bug das in der näschten Version weg ist.
ok, dein problem ist cniht implode, sondern dass verhalten von php bei der uebrtragung von gruppenelementen…
ich habe gerade ein wenig probiert…
php verhaelt sich wohl so, dass er die von dir angegeben indice prinzipiell als string interpretiert, und er das array deshalb cniht entsprechend den keys sortiert…
aber ob das ein bug sit… ich kenne nur die notation: