2014-12-03 115 views
0

对不起noob问题。但我被困在这里。

这是我的HTML表单,其中用户表单div可以尽可能多地克隆。 #提交表单div有一些隐藏的值,这对所有人都是通用的。

HTML -

<div class="user-form"> 
    <input type="text" autocomplete="off" name="name[]" > 
    <input type="email" autocomplete="off" name="mail[]" > 
</div> 

<div class="user-form"> 
    <input type="text" autocomplete="off" name="name[]" > 
    <input type="email" autocomplete="off" name="mail[]" > 
</div> 

<div id="submit-form"> 
    <input type='hidden' name='refer_user_id' value='<?php echo $refer_user_id ?>'> 
    <input type='hidden' name='refer_user_email' value='<?php echo $refer_user_email ?>'> 
    <input type="submit" value="Invite" /> 
    <input type="button" class="button" id="clonetrigger" value="Clone" /> 
</div> 

我使用AJAX提交表单。基本上我想使用名称和电子邮件字段创建帐户。在PHP中如何使用foreach循环访问名称和电子邮件字段,以便我可以创建唯一的帐户?

我的print_r($ _ POST);数组看起来像这样。

Array 
(
    [name] => Array 
    (
     [0] => david 
     [1] => Mark 
     [2] => cindy 
    ) 

    [mail] => Array 
    (
     [0] => [email protected] 
     [1] => [email protected] 
     [2] => [email protected] 
    ) 

    [refer_user_id] => 2 
    [$refer_user_email] => [email protected] 
) 
+1

看起来,如果你使用一个普通'for'循环与索引(即不'foreach'),你可以投其所好数字指标,对吗? – developerwjk 2014-12-03 20:05:20

回答

1

创建一个迭代次数等于提交的名称/电子邮件对数量的循环,然后使用循环计数器访问每个用户的值。

for ($i = 0; $i < count($_POST['name']); $i++) { 
{ 
    $name = $_POST['name'][$i]; 
    $mail = $_POST['mail'][$i]; 
    // Process the new user 
} 
+1

不计入循环中 – 2014-12-03 20:14:31

1
foreach($_POST['name'] as $key => $val) { 
    echo $val 
} 

foreach($_POST['mail'] as $key => $val) { 
    echo $val 
} 

最简单的方式通过这些元件回路。您可以使用$ _POST ['refer_user_id']引用其他元素。虽然这用于foreach的目的,上面发布的for循环更有效,所以我建议使用它。

http://php.net/manual/en/control-structures.foreach.php更多阅读在这里。

2

用foreach检查其中一个数组,使用第二个数组的键。

foreach($_POST['name'] as $key =>$name){ 
    $mail = $_POST[$key]; 
} 
1

可以使用array_combine功能:

$data = array_combine($_POST['name'],$_POST['mail']); 
foreach($data as $name=>$mail){ 
    print $name; 
    //... 
} 

array_combine

1

你也可以使用自动生成表单项的JavaScript来给它们一个可以导致连接php对象的名字。即

<div class="user-form"> 
    <input type="text" autocomplete="off" name="user[1][name]" /> 
    <input type="email" autocomplete="off" name="user[1][mail]" /> 
</div> 

<div class="user-form"> 
    <input type="text" autocomplete="off" name="user[2][name]" /> 
    <input type="email" autocomplete="off" name="user[2][mail]" /> 
</div> 

,那么你可以通过与foreach($_POST['user'] as $key=>$value)等的对环...