So erhalten Sie ein Formulareingabe-Array in ein PHP-Array

Lesezeit: 6 Minuten

So erhalten Sie ein Formulareingabe Array in ein PHP Array
thom

Ich habe ein Formular wie das untenstehende, an das gepostet wird Kontakte.phpund der Benutzer kann mit dynamisch weitere hinzufügen jQuery.

<input type="text" name="name[]" />
<input type="text" name="email[]" />

<input type="text" name="name[]" />
<input type="text" name="email[]" />

<input type="text" name="name[]" />
<input type="text" name="email[]" />

Wenn ich sie in PHP mit dem folgenden Code wiedergebe,

$name = $_POST['name'];
$email = $_POST['account'];

foreach($name as $v) {
    print $v;
}

foreach($email as $v) {
    print $v;
}

Ich werde so etwas bekommen:

Name1Name2Name3E-Mail1E-Mail2E-Mail3

Wie kann ich diese Arrays in etwas wie den folgenden Code bringen?

function show_Names($n, $m)
{
    return("The name is $n and email is $m, thank you");
}

$a = array("name1", "name2", "name3");
$b = array("email1", "email2", "email3");

$c = array_map("show_Names", $a, $b);
print_r($c);

also meine Ausgabe ist wie folgt:

Der Name ist Name1 und E-Mail ist E-Mail1danke Der Name ist Name2 und E-Mail ist E-Mail2danke Der Name ist Name3 und E-Mail ist E-Mail3Danke

So erhalten Sie ein Formulareingabe Array in ein PHP Array
Jeffrey Blake

Sie sind bereits in Arrays: $name ist ein Array, so wie es ist $email

Sie müssen also nur ein wenig Verarbeitung hinzufügen, um beide Arrays anzugreifen:

$name = $_POST['name'];
$email = $_POST['account'];

foreach( $name as $key => $n ) {
  print "The name is " . $n . " and email is " . $email[$key] . ", thank you\n";
}

Um mehr Eingaben zu verarbeiten, erweitern Sie einfach das Muster:

$name = $_POST['name'];
$email = $_POST['account'];
$location = $_POST['location'];

foreach( $name as $key => $n ) {
  print "The name is " . $n . ", email is " . $email[$key] .
        ", and location is " . $location[$key] . ". Thank you\n";
}

  • danke, was wäre, wenn ich eine weitere Eingabe wie den Standort hinzufügen würde[]wie könnte ich das auch hinzufügen?

    – Thom

    23. Juli 2010 um 1:06 Uhr

  • Im Grunde erweitern Sie einfach das Muster. Siehe meine Bearbeitung oben … alle zusätzlichen Eingaben sind auch Arrays, wenn Sie sie von $_POST zuweisen (vorausgesetzt, es gibt mehrere Eingaben mit diesem Namen im HTML-Code, wie Sie es bei diesen Feldern getan haben).

    – Jeffrey Blake

    23. Juli 2010 um 1:12 Uhr


  • Jeffrey, ich frage mich, ob ich der Reihenfolge der Arrays vertrauen kann. Das heißt, sind wir uns dessen sicher $emails[1] entspricht dem benannten Benutzer $name[1]? Ich glaube, ich hatte in der Vergangenheit Probleme damit, aber ich könnte mich irren. Danke

    – nikolagi

    13. November 2012 um 11:19 Uhr

  • @bruciasse – Die Art und Weise, wie der Server solche Eingabearrays behandelt, ist von Webserver zu Webserver unterschiedlich (verschiedene Betriebssysteme implementieren Dinge unterschiedlich, wenn es um solche feinkörnigen Details geht), aber jede Plattform, auf der ich diese Techniken eingesetzt habe, ist darin konsistent selbst (dh die Reihenfolge ist jedes Mal gleich). Es ist möglich, dass ein Browser die Reihenfolge der Anforderungsvariablen verwechselt, bevor er die Anforderung an den Server weiterleitet, aber ich würde erwarten, dass dies ziemlich ungewöhnlich ist. Das letzte Problem, mit dem Sie konfrontiert werden könnten, ist, dass HTML in einer seltsamen Reihenfolge gemischt und CSS angepasst wird

    – Jeffrey Blake

    14. November 2012 um 13:11 Uhr

  • … die Positionierung. Wenn Ihre Seite so wäre, würde es sicherlich einige seltsame Probleme mit der Reihenfolge der Arrays geben.

    – Jeffrey Blake

    14. November 2012 um 13:12 Uhr

1646973847 257 So erhalten Sie ein Formulareingabe Array in ein PHP Array
VolkerK

ZB durch Benennung der Felder wie

<input type="text" name="item[0][name]" />
<input type="text" name="item[0][email]" />

<input type="text" name="item[1][name]" />
<input type="text" name="item[1][email]" />

<input type="text" name="item[2][name]" />
<input type="text" name="item[2][email]" />

(was auch beim Hinzufügen von Elementen über JavaScript möglich ist)

Das entsprechende PHP-Skript könnte so aussehen

function show_Names($e)
{
  return "The name is $e[name] and email is $e[email], thank you";
}

$c = array_map("show_Names", $_POST['item']);
print_r($c);

  • Hallo, danke dafür, wie machst du das PHP-Skript in der Laravel-Funktion show_Names($e) { return “The name is $e[name] und E-Mail ist $e[email]danke”; } $c = array_map(“show_Names”, $_POST[‘item’]); print_r($c);

    – Jeche

    5. Januar 2021 um 7:44 Uhr

So erhalten Sie ein Formulareingabe Array in ein PHP Array
Can O’Spam

Sie könnten so etwas tun:

function AddToArray ($post_information) {
    //Create the return array
    $return = array();
    //Iterate through the array passed
    foreach ($post_information as $key => $value) {
        //Append the key and value to the array, e.g.
            //$_POST['keys'] = "values" would be in the array as "keys"=>"values"
        $return[$key] = $value;
    }
    //Return the created array
    return $return;
}

Der Test mit:

if (isset($_POST['submit'])) {
    var_dump(AddToArray($_POST));
}

Das hat bei mir produziert:

array (size=1)
  0 =>
    array (size=5)
      'stake' => string '0' (length=1)
      'odds' => string '' (length=0)
      'ew' => string 'false' (length=5)
      'ew_deduction' => string '' (length=0)
      'submit' => string 'Open' (length=4)

Ich bin auch auf dieses Problem gestoßen. Bei 3 Eingängen: Feld[]Feld2[]Feld3[]

Sie können auf jedes dieser Felder dynamisch zugreifen. Da es sich bei jedem Feld um ein Array handelt, teilen sich alle zugehörigen Felder denselben Array-Schlüssel. Zum Beispiel gegebene Eingabedaten:

  • Bob, bob@bob.com, männlich
  • Mark, mark@mark.com, männlich

Bob und seine E-Mail-Adresse und sein Geschlecht teilen denselben Schlüssel. In diesem Sinne können Sie auf die Daten in einer for-Schleife wie folgt zugreifen:

    for($x = 0; $x < count($first_name); $x++ )
    {
        echo $first_name[$x];
        echo $email[$x];
        echo $sex[$x];
        echo "<br/>";
    }

Das skaliert auch. Alles, was Sie tun müssen, ist, Ihre jeweiligen Array-Variablen hinzuzufügen, wann immer Sie neue Felder hinzufügen müssen.

1646973849 583 So erhalten Sie ein Formulareingabe Array in ein PHP Array
Sophia Gavisch

Sie können ein Array von Feldsätzen verwenden:

<fieldset>
    <input type="text" name="item[1]" />
    <input type="text" name="item[2]" />
    <input type="hidden" name="fset[]"/>
</fieldset>

<fieldset>
    <input type="text" name="item[3]" />
    <input type="text" name="item[4]" />
    <input type="hidden" name="fset[]"/>
</fieldset>

Ich habe ein verstecktes Feld hinzugefügt, um die Anzahl der Feldsätze zu zählen. Der Benutzer kann die Felder hinzufügen oder löschen und dann speichern.

1646973849 79 So erhalten Sie ein Formulareingabe Array in ein PHP Array
iroel

Die Lösung von VolkerK ist jedoch die beste, um ein falsches Paar zwischen E-Mail und Benutzername zu vermeiden. Sie müssen also HTML-Code mit PHP wie folgt generieren:

<? foreach ($i = 0; $i < $total_data; $i++) : ?>
    <input type="text" name="name[<?= $i ?>]" />
    <input type="text" name="email[<?= $i ?>]" />
<? endforeach; ?>

Ändern Sie $total_data entsprechend Ihren Anforderungen. Um es zu zeigen, einfach so:

$output = array_map(create_function('$name, $email', 'return "The name is $name and email is $email, thank you.";'), $_POST['name'], $_POST['email']);
echo implode('<br>', $output);

Angenommen, die Daten wurden mit der POST-Methode gesendet.

1646973850 923 So erhalten Sie ein Formulareingabe Array in ein PHP Array
Peter Mortensen

Das ist einfach:

foreach($_POST['field'] as $num => $val) {
    print ' ' . $num . ' -> ' . $val . ' ';
}

  • Eine Erklärung wäre angebracht. ZB, was ist die Idee/der Kern? Bitte antworten Sie, indem Sie Ihre Antwort bearbeiten (ändern), nicht hier in den Kommentaren (ohne “Bearbeiten:”, “Aktualisieren:” oder ähnliches – die Antwort sollte so aussehen, als wäre sie heute geschrieben).

    – Peter Mortensen

    18. September 2021 um 20:51 Uhr

989890cookie-checkSo erhalten Sie ein Formulareingabe-Array in ein PHP-Array

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy