使用带有foreach循环的$ _POST

时间:2014-08-07 19:35:20

标签: php

我正在尝试创建一个表单以在大学中插入学生标记..我有一个包含所有学生ID的列表和带有标记的表单..这是我的表单:

<input type="hidden" name="id[]" value="{$student.id}" />
<input type="text" name="mark[]" size="5" />

当然字段在表单中重复,但问题是当我试图打印结果时,这是我的代码

foreach ($_POST as $student){
            echo $student['id'].$student['mark'];
        }

但是当我提交表格时我得到了这个:

未定义的索引:id 未定义的索引:标记

我的代码PLZ有什么问题?

3 个答案:

答案 0 :(得分:2)

如果$student.id是唯一的,那么您应该考虑以下内容:

<input type="text" name="mark[{$student.id}]" size="5" />

这会在php端给你一个类似于

的结果
Array
(
    [mark] => Array
        (
            [studentID1] => 14
            [studentID2] => 60
            [studentID3] => 89
        )

)

因此在php中你可以这样做:

foreach($_POST['mark'] as $studentID => $mark){
    echo "The student". $studentID ." achieved mark: ". $mark;
}

答案 1 :(得分:0)

foreach ($_POST['id'] as $key => $studentId){
    echo $student['id'][$key].$student['mark'][$key];
}

当您声明name =“id []”时,您正在处理数组。 如果您在发布之前在表单上有两个名称“id []”,则会将其发布为:

array( 
    'id' => array(
         '0' => '',
         '1' => '',
     );
);

然后你应该使用

foreach ($array['id'] as $key => $value) {
    echo $array['id'][$key]; //got value
    echo $array['name'][$key]; //got custom value
}

答案 2 :(得分:0)

鉴于你的形式,你想要这样的东西:

foreach ($_POST['id'] as $key => $id){
     echo $id. $_POST['mark'][$key];
}