2011-07-06 173 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

這是一個更好的解決方案!我同意那個。 –