contact.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("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);
그래서 내 출력은 다음과 같습니다.
이름은 name1 이고 이메일은 email1 , 감사합니다
이름은 name2 이고 이메일은 email2입니다 . 감사합니다
이름은 name3 이고 이메일은 email3입니다 . 감사합니다.
도움이나 조언을 주셔서 감사합니다
답변
이미 배열에 있습니다. $name
은 그대로 배열입니다.$email
따라서 두 어레이를 모두 공격하기 위해 약간의 처리를 추가하기 만하면됩니다.
$name = $_POST['name'];
$email = $_POST['account'];
foreach( $name as $key => $n ) {
print "The name is ".$n." and email is ".$email[$key].", thank you\n";
}
더 많은 입력을 처리하려면 패턴을 확장하면됩니다.
$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";
}
답변
예를 들어 필드 이름을 다음과 같이 지정합니다.
<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 "The name is $e[name] and email is $e[email], thank you";
}
$c = array_map("show_Names", $_POST['item']);
print_r($c);
답변
지금은 조금 늦었지만 다음과 같이 할 수 있습니다.
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;
}
테스트 :
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)
답변
필드 셋의 배열이 있다면 어떨까요?
<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>
필드 세트의 수를 계산하기 위해 숨겨진 필드를 추가했습니다. 사용자는 필드를 추가하거나 삭제 한 다음 저장할 수 있습니다.
답변
나도이 문제를 만났다. 주어진 3 개의 입력 : field [], field2 [], field3 []
이러한 각 필드에 동적으로 액세스 할 수 있습니다. 각 필드는 배열이므로 관련 필드는 모두 동일한 배열 키를 공유합니다. 예를 들어, 주어진 입력 데이터 :
- Bob, bob@bob.com, 남성
- Mark, mark@mark.com, 남성
Bob과 그의 이메일 및 성별은 동일한 키를 공유합니다. 이를 염두에두고 다음과 같이 for 루프의 데이터에 액세스 할 수 있습니다.
for($x = 0; $x < count($first_name); $x++ )
{
echo $first_name[$x];
echo $email[$x];
echo $sex[$x];
echo "<br/>";
}
이것은 또한 확장됩니다. 새 필드를 추가해야 할 때마다 각 배열 변수를 추가하기 만하면됩니다.
답변
그러나 VolkerK의 솔루션은 이메일과 사용자 이름 사이의 누락을 피하는 가장 좋은 방법입니다. 따라서 다음과 같이 PHP로 HTML 코드를 생성해야합니다.
<? foreach ($i = 0; $i < $total_data; $i++) : ?>
<input type="text" name="name[<?= $i ?>]" />
<input type="text" name="email[<?= $i ?>]" />
<? endforeach; ?>
필요에 맞게 $ total_data를 변경하십시오. 표시하려면 다음과 같이하십시오.
$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);
데이터가 POST 메서드를 사용하여 전송되었다고 가정합니다.
답변
그럼에도 불구하고 아래 코드를 다음과 같이 사용할 수 있습니다.
$a = array('name1','name2','name3');
$b = array('email1','email2','email3');
function f($a,$b){
return "The name is $a and email is $b, thank you";
}
$c = array_map('f', $a, $b);
//echoing the result
foreach ($c as $val) {
echo $val.'<br>';
}