3
<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( ...
  ....
  ....
);

私がこれをやろうとしている理由は、この配列をシリアル化し、データベースに 1 つのデータ エントリとして保存したいからです。それは可能ですか?

4

4 に答える 4

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);
 }
于 2012-05-19T13:05:12.720 に答える
2

名前を変更します。

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

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

あなたのデータ配列:

$data = $_POST["myform"]
于 2012-05-19T13:05:00.370 に答える
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
        )

)
于 2012-05-19T13:02:45.817 に答える
-2

全体$_POSTをシリアル化して保存するだけです。

serialize($_POST);

または

serialize($_GET);
于 2012-05-19T13:01:25.147 に答える