【问题标题】:How to define an array of form fields PHP如何定义表单字段数组 PHP
【发布时间】:2011-05-19 17:40:00
【问题描述】:

我有一个问题。

我在第一页有这段代码:

<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 定义下一页中的字段数组?

【问题讨论】:

  • 哇...我想我需要一两杯来理解那个。你能改写你的问题吗?您是想通过 post 操作传递一组值,还是……您想在这里做什么?
  • 对不起,我对系统不了解。这就是为什么我的评分如此糟糕的原因。
  • 只需点击顶部菜单栏中的用户名(或其他任何地方)进入您的个人资料页面,然后开始查看您之前的问题并将帮助您解决问题的答案标记为点击答案分数下方的复选标记接受。

标签: php post form-submit


【解决方案1】:

$_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" />

您还忽略了关闭包装text[] 输入的&lt;div&gt;。否则,您的文档格式不正确,尽管浏览器会尝试解析文档,但不能保证它们会按照您想要的方式进行。

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

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

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

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

您的代码中的 for loop is more appropriatewhile 循环。尽管两者都做同样的事情,但它们具有不同的内涵(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; ?>

【讨论】:

  • 抱歉这个无聊的问题,但我必须在上面的代码或下一页中输入这一行。
  • @Victor:您将在帖子提交发生时处理的页面中使用此代码。因此,如果您的表单提交给filename.php,那么这就是您将使用@outis 代码的文件。
【解决方案2】:

试试:

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

在表单提交到的页面中。

【讨论】:

    【解决方案3】:

    我在上网本上,编写代码很痛苦,更不用说测试了。

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

    【讨论】:

    • 无论您是否有键盘/机器障碍,这都不是一个答案。
    • 你应该看到我的数字的大小!至少经过一些粗暴使用后,键盘已经松了一点。但是,它真的很紧。下次我敲门的时候,我会添加一些伪代码,让你更容易。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2014-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多