如何定义表单字段数组PHP

时间:2010-12-03 12:35:41

标签: php post form-submit

我有一个问题。

我在第一页中有这段代码:

<input type="text" name="number" id="number">
<input type="submit" name="button_add" id="button_add" value="add">
<? 
$i=0;
while($number>$i) { $i++; ?>
  <div align="left">
  <input type="text" name="text[<? echo $i; ?>]" id="text[<? echo $i; ?>]" /><? } 
?>

如何使用$_POST vars在下一页中定义fileds数组?

3 个答案:

答案 0 :(得分:4)

$_POST中的条目本身就是一个数组,如果这就是你所要求的:

for ($i = 0; $i < count($_POST['text']); ++$i) {
    // do something with this post:
    $_POST['text'][$i];
}

或:

foreach ($_POST['text'] as $i => $text) {
    // do something with:
    $text;
    // Note: $text === $_POST['text'][$i]
}

题外话

始终关闭您的元素:

<input type="text" name="number" id="number" />
<input type="submit" name="button_add" id="button_add" value="add" />

您也忽略了关闭<div>包裹text[]输入。如果不这样做,您的文档格式不正确,虽然浏览器会尝试解析文档,但无法保证他们会按照您想要的方式执行此操作。

输入的默认类型是文本。将type属性设置为“text”并没有什么坏处,但没有必要。

不要依赖short tags;使用完整的<?php。并非所有主机都会启用它们,并且它们已经被弃用并且很快就会消失(在PHP 5之前已经有一些关于取消它们的讨论)。

您不需要为输入名称显式指定数组索引; empty brackets将导致将值分配给数组的末尾。此外,'['和']'不是valid characters for IDs

<input type="text" name="text[]" id="text_<?php echo $i; ?>" />

代码中的for loop is more appropriate而非while循环。虽然两者都做同样的事情,但它们具有不同的内涵(while循环重复,而某些静态条件在变化的情况下保持; for循环重复序列)。

for ($i=0; $i < $number; ++$i) {

总之,我们有:

<input name="number" id="number" />
<input type="submit" name="button_add" id="button_add" value="add" />
<?php for ($i=0; $i < $number; ++$i): ?>
  <div align="left">
    <input name="text[]" id="text_<?php echo $i; ?>" />
  </div>
<?php endfor; ?>

答案 1 :(得分:3)

尝试:

foreach( $_POST['text'] as $key => $value){
 echo "Value for texbox # ".$key." is:". $value;
    // or whatever code you want
}

在表单提交的页面中。

答案 2 :(得分:-2)

我正在使用上网本,写代码更不用说了,更不用说了。

使用循环和post var和isset函数。