2012-05-19 27 views
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(... 
    .... 
    .... 
); 

爲什麼我想原因做到這一點,是我想序列化這個數組並將其作爲一個數據條目保存到我的數據庫中。那可能嗎?

回答

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); 
} 
-2

您可以簡單地序列化整個$_POST並保存它。

serialize($_POST); 

或者

​​
+0

那不是讓你用組合在一起,而不是在名稱/電子郵件不同的輸入名字,名稱/電子郵件...結構?以及可能已發佈的任何其他內容 – Simon

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 
     ) 

) 
2

變化你的命名爲:

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

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

您的數據陣列:

$data = $_POST["myform"] 
+0

這種方法如果可以的話,比收到數據後重新排列數據更可靠 – Simon