在for循环中从$ _POST获取数据

时间:2011-07-06 11:40:57

标签: php html css post http-post

如果我的表单中有一些隐藏的输入:

<input type="hidden" name="test" value="somedata">
<input type="hidden" name="entry0" value="moredata">
<input type="hidden" name="entry1" value="moredata">
<input type="hidden" name="entry2" value="moredata">
<input type="hidden" name="entry3" value="moredata">
<input type="hidden" name="entry4" value="moredata">

现在,一旦表单提交并且我从帖子中获取数据,如果我尝试拨打$_POST['test'],那么我将获得“somedata”值。但如果我这样做:

for($i = 0; $i < 5; $i++)
{
  $x = 'entry{$i}';
  echo $_POST[$x]; // This does not work.
}

然后我没有为每个“条目”输入返回“更多数据”值。如果我打印出定义为$x的字符串,那么我会得到我之后的字符串,但似乎不希望像$_POST一样工作。任何人都有任何想法如何解决这个问题?

由于

4 个答案:

答案 0 :(得分:7)

在字符串文字内部,只有在字符串文字用双引号括起来时才会插入变量:

for ($i = 0; $i < 5; $i++) {
  $x = "entry{$i}";
  echo $_POST[$x];
}

为了更加安全,您可能需要在订阅array_key_exists($x, $_POST)之前检查是否$_POST,否则如果传递的字段不对应,您将收到级别E_NOTICE的错误。

答案 1 :(得分:3)

尝试使用数组表示法:

<input type="hidden" name="entry[0]" value="moredata">
<input type="hidden" name="entry[1]" value="moredata">
<input type="hidden" name="entry[2]" value="moredata">
<input type="hidden" name="entry[3]" value="moredata">
<input type="hidden" name="entry[4]" value="moredata">

<?php
echo implode($_POST['entry']);

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

答案 2 :(得分:0)

$_POST而不是$POST

答案 3 :(得分:0)

首先检查:

echo $ POST [$ x]; //这不起作用。

应该是

echo $ _POST [$ x]; //注意下划线。