У меня есть форма, как показано ниже, которая размещается в contacts.php, и пользователь может динамически добавлять дополнительные данные с помощью 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[]" />
Если я повторю это на php с кодом ниже:
$name = $_POST['name'];
$email = $_POST['account'];
foreach( $name as $v ) {
print $v;
}
foreach( $email as $v ) {
print $v;
}
Получу что-то вроде этого:
name1name2name3email1email2email3
Как я могу превратить эти массивы во что-то вроде кода ниже:
function show_Names($n, $m) {
return("Имя $n и адрес электронной почты $m, спасибо");
}
$a = array("name1", "name2", "name3");
$b = array("email1", "email2", "email3");
$c = array_map("show_Names", $a, $b);
print_r($c);
Так, чтобы мой результат был таким:
Имя name1 и адрес электронной почты email1, спасибо
Имя name2 и адрес электронной почты email2, спасибо
Имя name3 и адрес электронной почты email3, спасибо
Спасибо за любую помощь или совет.
Ответ 1
Они уже находятся в массивах: $name — массив, как и $email.
Поэтому все, что вам нужно сделать, — это добавить немного обработки, чтобы использовать оба массива:
$name = $_POST['name'];
$email = $_POST['account'];
foreach( $name as $key => $n ) {
print "Имя - ".$n." и email - ".$email[$key].", спасибо\n";
}
Чтобы обработать больше входных данных, просто расширьте шаблон:
$name = $_POST['name'];
$email = $_POST['account'];
$location = $_POST['location'];
foreach( $name as $key => $n ) {
print "Имя ".$n.", электронная почта ".$email[$key].
", местоположение - ".$location[$key].". Спасибо\n";
Ответ 2
Например, назвав поля как:
<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]" />
(что также возможно при добавлении элементов через javascript). Соответствующий скрипт php может выглядеть так:
function show_Names($e) {
return("Имя $n и адрес электронной почты $m, спасибо");
}
$c = array_map("show_Names", $_POST['item']);
print_r($c);
Ответ 3
Вы могли бы сделать что-то вроде этого:
function AddToArray ($post_information) {
//Создаем возвращаемый массив
$return = array();
//Итерация по переданному массиву
foreach ($post_information as $key => $value) {
//Добавьте ключ и значение в массив, например.
//$_POST['keys'] = "values" будет находиться в массиве как "keys"=>"values"
$return[$key] = $value;
}
//Возвращаем созданный массив
return $return;
}
Для теста:
if (isset($_POST['submit'])) {
var_dump(AddToArray($_POST));
}
Результат:
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)
Ответ 4
Вы можете использовать приведенный ниже код:
$a = array('name1','name2','name3');
$b = array('email1','email2','email3');
function f($a,$b){
return("Имя $n и адрес электронной почты $m, спасибо");
}
$c = array_map('f', $a, $b);
// вывод результата
foreach ($c as $val) {
echo $val.'<br>';
}
Ответ 5
Использование этого метода должно работать:
$name = $_POST['name'];
$email = $_POST['account'];
while($explore=each($email)) {
echo $explore['key'];
echo "-";
echo $explore['value'];
echo "<br/>";
}

Web