2011-07-06 176 views
3

如果我有我的一些形式的隐藏输入:

<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. 
} 

然后我没有得到我的“moredata”值为每个'条目'输入。如果我打印出的字符串定义为$x,那么我得到了我之后的字符串,但似乎并不想像$_POST那样工作。任何人有任何想法,我怎么能解决这个问题?

由于

+1

它是一个错字被复制? '$ POST'而不是'$ _POST' – Balanivash

+0

是的。现在编辑... –

+0

@ ing0,看看加维提出的解决方案,这可能是一个更好的方法。 –

回答

7

内字符串常量,变量只有当字面字符串括在双引号内插:

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

对于额外的安全,你可能要下标$_POST前检查是否array_key_exists($x, $_POST),否则你会得到一个错误E_NOTICE如果传递的字段不对应。

+0

谢谢。没有意识到双引号! +1 –

0

首先检查:

回波$ POST [$ X]; //这不起作用。

应该是

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

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]; 
} 
+1

这是一个更好的解决方案!我同意那个。 –