code

양식 입력 배열을 PHP 배열로 가져 오는 방법

codestyles 2020. 9. 9. 08:03
반응형

양식 입력 배열을 PHP 배열로 가져 오는 방법


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

This scales as well. All you need to do is add your respective array vars whenever you need new fields to be added.


However, VolkerK's solution is the best to avoid miss couple between email and username. So you have to generate HTML code with PHP like this:

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

Change $total_data to suit your needs. To show it, just like this:

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

Assuming the data was sent using POST method.


Nonetheless, you can use below code as,

$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>';
}

This is easy one:

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

Using this method should work:

$name = $_POST['name'];
$email = $_POST['account'];
while($explore=each($email)) {
    echo $explore['key'];
    echo "-";
    echo $explore['value'];
    echo "<br/>";
}

참고URL : https://stackoverflow.com/questions/3314567/how-to-get-form-input-array-into-php-array

반응형