Arrays 如何使用PHP格式化数组?

Arrays 如何使用PHP格式化数组?,arrays,Arrays,我正在尝试从我创建的表单中获取数据,在该表单中,我使用数组来命名它们,如下所示: <input type="text" name="fname[]" /> <input type="text" name="mname[]" /> <input type="text" name="lname[]" /> 但是当我使用var_dump查看值时,每个字段都将从零开始索引,如果它有重复的字段,它将再次声明为数组中的另一个数组 我想做的是用以下结构创建一个数组: $s

我正在尝试从我创建的表单中获取数据,在该表单中,我使用数组来命名它们,如下所示:

<input type="text" name="fname[]" />
<input type="text" name="mname[]" />
<input type="text" name="lname[]" />
但是当我使用var_dump查看值时,每个字段都将从零开始索引,如果它有重复的字段,它将再次声明为数组中的另一个数组

我想做的是用以下结构创建一个数组:

$student = array(
     array(
          'fname' => 'fname1',
          'mname' => 'mname1',
          'lname' => 'lname1'
     ),
     array(
          'fname' => 'fname2',
          'mname' => 'mname3',
          'lname' => 'lname2'
     )
);
我尝试使用循环,但一次又一次失败。有人能帮我解决这个问题吗

提前感谢您的帮助。


<?php

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

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

?>

不需要循环。您的
$\u POST['student']
变量将自动成为您想要实现的数组

编辑:这没有达到预期的结果。每个字段的值都在递增
student
。将
n
值添加到第一组括号中,如
student[n][fname]
可以获得所需的结果。我不知道如何编写脚本来动态生成这三个字段,但如果你能想出如何添加
n
值,那你就太棒了。

Oops,我想已经足够了,但我相信应该是以下内容(现在无法测试)。试试看:

(注意添加的数字索引)


然后,当您执行
回显“”时。打印($_POST['student',true)您应该看到您正在寻找的结构。

由于每次提交时我的表单字段编号都不同,我该如何停止循环?对不起,克林特,我在编程方面还是个新手。Stephans是一种更简单/更好的方法,但我更新了我的示例,在其中添加了一个循环,以防您对循环感到困惑。+1这也是我输入的答案。不需要了。嗨,Stephan,我有点困惑如何才能使用$_POST[]@Jag:do a
var_dump($_POST['student'])获取值你会看到
student
字段的结构。我得到了这个:数组(6){[0]=>array(1){[“fname”]=>string(6)“fname1”}[1]=>array(1){[“mname”]=>string(6)“mname1”}[2]=>array(1){[“lname”=>string(6)“lname1”}[3]=>array(1){“fname”=>string(6)“fname2”}[4]=>array(1){[“mname”]=>string(6)“mname2”}[5]=>array(1){[“lname”]=>string(6)“lname2”}这是否与我上面指出的结构相同?@Jag:请参见我答案中的编辑;您提到这些字段是动态生成的,因此您需要在前端找到一种在空括号中添加数值的方法,如
student[0][fname]
。那你就准备好了。我用了几种不同的方法对它进行了测试,这是实现您想要的数组的唯一方法。我想动态添加和删除表单字段,因此,我应该知道如何添加student[n][fname]等等。无论如何,谢谢你告诉我如何干净地打印阵列。
<?php

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

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

?>
<input type="text" name="student[]['fname']" />
<input type="text" name="student[]['mname']" />
<input type="text" name="student[]['lname']" />
<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...