PHP Verständnisproblem: foreach

Rain

Lieutenant
Registriert
Mai 2003
Beiträge
704
Hi! Ich hab hier grad ne Sache die mich bissel aufregt, weil ich absolut nicht verstehe wieso weshalb warum.. Folgendes:

Ich hab ne normale foreach Schleife, mit der ich das $_POST Array nach paar Sachen überprüfe.

PHP:
foreach ($_POST AS $value) {
echo key($_POST)." ".$value."<br>";
next($_POST);}echo "<br>";

Hier mal einfach nur Schlüssel und Wert ausgegeben. Klappt wunderbar, soweit so gut. Hab dann in etwa eine Ausgabe wie:

Code:
_t_a_t_Praktikant 1
job teeessssst
datum 15.05.2009
datum_von 15.05.2009
datum_bis 15.07.2009
dispo_gruppe_ok Ok

Wenn ich aber vor dieser Ausgabe zB folgendes mache:

PHP:
$_POST['job'] = trim($_POST['job']);

und danach die foreach Schleife , erhalte ich folgende Ausgabe:

Code:
job 1
datum teeessssst
datum_von 15.05.2009
datum_bis 15.05.2009
dispo_gruppe_ok 15.07.2009
Ok

Die Werte sind quasi in ihrer Reihenfolge geblieben aber die Schlüssel sind um eine Position nach vorn gerückt! Wie kann das sein? Gleiche passiert auch wenn ich 2 mal die forschleife hintereinander mache. Ein reset($_POST) bewirkt nix. Hilfe!
 
Warum benutzt du nicht die 2. Syntax von foreach um an den Key zu kommen?
Vergiss Next und machs so:

PHP:
foreach ($_POST as $key => $value)
    echo $key." ".$value."<br>";

edit: das trim() solltest du dann auf $key und $value anwenden, nicht direkt auf $_POST.
 
Zuletzt bearbeitet:
warum überhaupt erstmal foreach..

zum ausgeben einfach mal var_dump:

<?php
echo "<pre>";
var_dump($_POST);
echo "</pre>";
?>

sowas in der Art, und dann erstmal schauen was man manipulieren will, wobei es eher ungewöhnlich ist $_POST zu verändern, macht sich nicht gerade schick im quellcode.
 
Erst mal vielen Dank für eure Antworten!

@ Surviv0r:

So wie ich es bisher gemacht habe, benötigte ich in der foreach ein next(), da der interne Zeiger zwar beim Wert weiter gerutscht ist, aber der Schlüssel nicht, die Ausgabe sieht dementsprechend so aus:

Code:
job 1
job tesst
job 
job 15.05.2009
job 15.07.2009
job Ok

@ carom:

Danke für den Hinweis! Diese Syntax ist mir bis jetzt noch nicht begegnet, super! Funktioniert so wie es soll.

@ DerYvo:

foreach benötige ich, da ich auslese, welche Schlüssel mit dem Präfix _t_a_t_ übergeben worden sind (aus ner checkbox-auswahl). Die ohne das Präfix sind feste Schlüssel/Werte-Paare und werden immer übergeben. "job" ist zB so eine Sache. Und da ich keine unnötigen Leerzeichen in meine DB speichern will, ists doch praktisch gleich die POST['job'] zu bearbeiten anstatt zB in der foreach immer mit IF ($key=="job"), oder? Elegantere Lösungsvorschläge begrüße ich natürlich ;)
 
Zurück
Oben