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

时间:2015-03-25 15:30:41

标签: php html arrays session multidimensional-array

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

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

2 个答案:

答案 0 :(得分:1)

使用名称属性

您可以使用表单中的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

答案 1 :(得分:0)

使用这样的会话:

<?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