
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

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";
}

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);

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.

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.

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.

Peter Mortensen
Das ist einfach:
foreach($_POST['field'] as $num => $val) {
print ' ' . $num . ' -> ' . $val . ' ';
}
9898900cookie-checkSo erhalten Sie ein Formulareingabe-Array in ein PHP-Arrayyes