Implode - ich blöde

hallo ihr profis,

ich bin ein wenig am verzweifeln. ich habe mehrere aussagen aus einem formular in einem array gespeichert. gespeichert ist

$aus[nummer]=„ON“;

für eine zustimmung und

$aus[nummer]=„NO“;

wenn der aussage nicht zugestimmt wird. bitte - fragt mich jetzt nicht, warum ich ON und NO verwende und nicht TRUE und FALSE, es gab fehler und bei der fehlersuche habe ich das jetzt so umgestellt. wenn ich das array jetzt aber in einem string umwandeln will, funzt es nicht. ich verstehe das nicht.

for ($ab=0;$ab";
}

funktioniert. die ausgabe ist richtig. im nächsten schritt wandel ich um:

$saus=implode("]",$aus);

jetzt sollte man erwarten, dass $saus in etwa so ausschaut:

NO]NO]ON]ON]NO]NO]NO (…)

tuts aber net :frowning: in der tat werden exakt genau so viele „ON“ im string gesetzt, wie im array, aber nicht an den richtigen stellen: alle ONs stehen am anfang, alle NOs am ende. es ergibt sich:

ON]ON]ON]ON]ON]NO]NO]NO]NO]NO

wie kann das sein?

danke für eure hilfe!

christian

Hallo!

Evtl. ist das Array intern falsch sotiert.

Probiermal die fkt ksort($aus).

Greetz
Mike

danke für den tipp. das funktioniert.

aber es ärgert mich, dass ich nicht weiss, warum es funktioniert bzw. ohne diese funktion nicht. wie kann es sein, dass die for-schleife mit aufsteigendem index zu einer richtigen ausgabe führt

0–>NO
1–>NO
2–>ON
3–>NO
4–>ON

aber der implode-string nicht? und was bewirkt die ksort-fnkt, dass dies ändern?! in der selfphp-erklärung finde ich nichts, was mein array derart verändern würde… ich versteh das nicht.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo!

Wenn du z.B. ein Array folgendermaßen initalisierst :

$a[0] = 0;
$a[2] = 2;
$a[1] = 1;

kommt bei implode(",",$a) folgendes heraus :

(0,2,1)

ksort sortiert die Einträge nach ihren Schlüßeln. Da in PHP ein Array nicht über indices sondern über schlüßel deklariert werden, herscht FIFO. ksort() sortiert die Einträge.

In einer Schleife wird von dir eine „Sortierung“ vorgenommen, indem du von 0-n zählst. Deshalb bekommst du bei deiner Ausgabe die richtige Reihenfolge.

Die API für weitere Fragen findest du unter http://www.php.net

Greetz
Mike

hi mike,

vielen vielen dank - jetzt hab ich gerafft. dann hats bei mir bisher immer nur aus zufall funktioniert… is ja frech.

jetzt funktionierts prima. und ich verstehe sogar, warum die sortierung vorher so war, wie sie war: ich habe ebenfalls in einer for-schleife alle nicht gesetzten $aus mithilfe eine if-anweisung auf „no“ gesetzt. das heißt, es wurden vorher alle ONs gesetzt und hinterher alle NOs dort, wo keine ONs waren. hinterher - deswegen stehen sie hinten

vielen dank für deine mühe!

christian