2011-08-24 54 views
0

我想从我创造,我用一个数组来命名表单他们喜欢的数据:如何使用PHP格式化数组?

<input type="text" name="fname[]" /> 
<input type="text" name="mname[]" /> 
<input type="text" name="lname[]" /> 

在说表单域动态插入或在网页上移除。

在我的脚本来获得的表格值,我写的是这样的:

$student = array(
    'fname' => '$_POST[fname]', 
    'mname' => '$_POST[mname]', 
    'lname' => '$_POST[lname]', 
); 

但是,当我使用的var_dump看到的值,每个字段将从0索引,如果有重复的领域,它将再次被声明为数组中的另一个数组。

我想要做的是与这个stucture数组:

$student = array(
    array(
      'fname' => 'fname1', 
      'mname' => 'mname1', 
      'lname' => 'lname1' 
    ), 
    array(
      'fname' => 'fname2', 
      'mname' => 'mname3', 
      'lname' => 'lname2' 
    ) 
); 

我试图用一个循环,但我只是一次又一次的失败。任何人都可以帮我解决这个问题吗?

非常感谢您的帮助。

回答

2
<input type="text" name="student[]['fname']" /> 
<input type="text" name="student[]['mname']" /> 
<input type="text" name="student[]['lname']" /> 

没有循环必要的。您的$_POST['student']变量将自动成为您想要实现的数组。

编辑:这没有达到预期的结果。它为每个字段递增student。将一个n值添加到第一组括号,如student[n][fname]确实达到了预期的结果。我不知道如何编写脚本来即时动态生成这三个字段,但如果您可以弄清楚如何添加n值,那么您就是最好的选择。

+1

+1这就是我输入的答案。不再需要它了。 –

+0

您好Stephan,我对如何使用$ _POST [] – Jag

+0

@Jag:做一个var_dump($ _POST ['student']);''你会看到结构'学生'领域。 –

0
<?php 

for($i=0; $i<count($_POST['fname']); $i++) { 

$student[] = array(
     'fname' => $_POST['fname'][$i], 
     'mname' => $_POST['mname'][$i], 
     'lname' => $_POST['lname'][$i], 
     ); 
} 

?> 
+0

由于我的表单字段数量因每次提交而不同,我会如何为停止循环做些什么?对不起,克林特,我还是很新的编程。 – Jag

+1

斯蒂芬斯是更容易/更好的方式做它,但我更新了我的例子与一个循环,因为它是你感到困惑的循环。 –

+0

明白了。谢谢克林特。 – Jag

0

哎呀,我认为Stephan's answer就足够了,但应该是我认为(现在无法测试)的以下内容。试试看:

<input type="text" name="student[0]['fname']" /> 
<input type="text" name="student[0]['mname']" /> 
<input type="text" name="student[0]['lname']" /> 

<input type="text" name="student[1]['fname']" /> 
<input type="text" name="student[1]['mname']" /> 
<input type="text" name="student[1]['lname']" /> 

etc... 

(注意添加数字索引)

然后,当你做一个echo '<pre>' . print_r($_POST[ 'student' ], true);你应该看到你正在寻找的结构。

+0

我想要添加和删除表单域,因此,我应该弄清楚如何添加student [n] [fname]等。 非常感谢您告诉我如何干净地打印阵列。 – Jag