如果我的表单中有一些隐藏的输入:
<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
一样工作。任何人都有任何想法如何解决这个问题?
由于
答案 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]; //注意下划线。