2

在我的 php 代码中,我几乎没有动态文本框。我通过回声给了名字,

for($i=1; $i<=5; $i++) {    
echo "<td><input type='text' name='avar[$i]'/></td>";
}

这个动态文本框在表单标签下。提交后,我想接收在动态生成的文本框中输入的值。我试过这个方法

for($i=1; $i<=5; $i++) {    
echo $_POST['avar'].[$i];
}

但它会导致错误“注意:未定义的偏移量:1”。请建议

4

3 回答 3

1

您正在尝试访问未定义的索引。

试试这个:

for($i=1; $i<=5; $i++) {    
echo $_POST['avar'][$i];
}

工作版本:

<?php    
if(isset($_POST['submit'])) { //check if form submitted
    for($i=1; $i<=5; $i++) {    
    echo $_POST['avar'][$i];
    }
}    
?>
<!-- form begin -->
<form action="" method="post">    
    <?php
    for($i=1; $i<=5; $i++) {    
    echo "<td><input type='text' name='avar[$i]'/></td>";
    }
    ?>    
<input type="submit" name="submit"/>
</form>
<!-- form end -->
于 2013-08-16T19:26:44.543 回答
1

在您的表单中,您不需要为数组分配索引值。您可以为每个字段留下空括号:

for($i=1; $i<=5; $i++) {    
    echo "<td><input type='text' name='avar[]'/></td>";
}

要检索值:

if (isset($_POST['avar'])){
    foreach ($_POST['avar'] as $key => $value){
        echo $value;
    }
}
于 2013-08-16T19:49:11.150 回答
0

在您动态创建的 html 中,您指定为输入标签的名称是:
"avar[" . $i . "]"
当您想要检索它时,您应该使用:

$_POST['avar[' . $i . ']']

但是对于haml标签名称使用类似名称的数组并不是一个好主意。因为您不能将标签名称设置为数组并在发布它们时像数组一样检索它们。

于 2013-08-16T19:42:01.070 回答