将多个记录作为数组插入

时间:2012-05-19 12:37:57

标签: php arrays forms

<input name="name[]">
<input name="email[]">

<input name="name[]">
<input name="email[]">

<input name="name[]">
<input name="email[]">

....
....

在提交包含这些字段的表单时,我正在尝试构建一个看起来像这样的数组:

array(

  array(
   'name'=> 'name1',
   'email' => 'email1'
  );

  array(
   'name'=> 'name2',
   'email' => 'email3'
  );

  array( ...
  ....
  ....
);

我尝试这样做的原因是,我想序列化这个数组并将其作为一个数据条目保存到我的数据库中。这可能吗?

4 个答案:

答案 0 :(得分:3)

您可以使用循环逻辑

if($_SERVER['REQUEST_METHOD']=='POST'){
    foreach ($_POST as $k=>$v){
   if(is_array($v)){
       foreach ($v as $sk=>$sv){ 
                $arr[$sk][$k]=$sv;
        }
       }
    }
  echo "<pre>";
  print_r($arr);
 }

答案 1 :(得分:2)

更改您的命名:

<input name="myform[0][name]">
<input name="myform[0][email]">

<input name="myform[1][name]">
<input name="myform[1][email]">

您的数据阵列:

$data = $_POST["myform"]

答案 2 :(得分:1)

要生成您正在寻找的结构,您可以这样做:

$data = array();

foreach ($_POST['email'] as $id => $email) {
  $data[$id]['email'] = $email;
}

foreach ($_POST['name'] as $id => $name) {
  $data[$id]['name'] = $name;
}

这给你一些类似的东西:

Array
(
    [0] => Array
        (
            [email] => email1
            [name] => name1
        )

    [1] => Array
        (
            [email] => email2
            [name] => name2
        )

    [2] => Array
        (
            [email] => email3
            [name] => name3
        )

)

答案 3 :(得分:-2)

您只需序列化整个$_POST并保存即可。

serialize($_POST);

或者

serialize($_GET);