如何将输入字段中的数据存储在关联数组中


How store data in an associative array from an input field?

是否可以从输入字段中获取数据并将其存储在PHP的关联数组中?

例如,如果我们在一个表单上有两个输入字段,第一个是名字,第二个是姓氏。当我们在两个字段中输入数据时,它应该存储在关联数组中。假设我们想输入数据5次,然后在浏览器上显示所有5个名字及其对应的姓氏。

使用名称属性

您可以使用表单中的name属性来发送数组。

例如(只有3个名字;-):

<form action="test.php" method="post">
    <input name="first_name[]" value="John">
    <input name="first_name[]" value="James">
    <input name="first_name[]" value="Jimmy">
    <input name="last_name" value="Doe">
    <input type="submit">
</form>

如果您提交了这个,$_POST["first_name"]将是一个数组(test.php):

echo "$_POST['first_name'][0] $_POST['first_name'][1] $_POST['first_name'][2] $_POST['last_name']";

输出:

John James Jimmy Doe

使用explode()

另一种方法是有2个输入字段,并在服务器上拆分第一个名称:

<form action="test.php" method="post">
    <input name="first_name" value="John James Jimmy">
    <input name="last_name" value="Doe">
    <input type="submit">
</form>

和在test.php中:

$first_names = explode(' ',$_POST['first_name']);

将对数组进行索引。如第一个例子所示:

echo "$first_names[0] $first_names[1] $first_names[2] $_POST[last_name]";

输出:

John James Jimmy Doe

使用这样的会话:

<?php  
    session_start();
    if(isset($_POST['lname']) && isset($_POST['marks'])){        
    $_SESSION['info'][] = array($_POST['lname'] => $_POST['marks']);
    }
    if(isset($_SESSION['info'])) {
    for($i = 0; $i < count($_SESSION['info']); $i++) {
      foreach($_SESSION['info'][$i] as $name => $marks){
        echo '<p>' . $name . '<br>';
        echo $marks . '</p>';
     }
    } 
    }    
    ?>
    <form action = "<?php echo $_SERVER['PHP_SELF'];?>" method = "POST">
    Name:<br>
    <input type = "text" name = "lname"><br><br>
    Marks:<br>
    <input type = "text" name = "marks"><br><br>
    <input type = "submit" value = "Submit">
    </form>

阅读更多信息:

http://php.net/manual/en/intro.session.php