2012-03-01 48 views
0

我想通過更改其值(輸入)從表單傳遞數組。 用戶可以更改輸入的值, 怎麼可能檢索到數組改變?從表單發送的另一個頁面檢索數組

例如...

<?php $vector = array("product1" => 150, "product2" => 120); ?> 
    <table> 
    <form action="page2.php" method="get"> 

    <?php foreach ($vector as $key => $value) { 
echo "<tr><td>Product: $name</td><td><input type='text' name='$key' 
    value='$value'/> 
    </td>"; 
    } 
    <tr> 
<td><input type="submit" name="process" value="Submit" /></td> 
    </tr> 
    </form> 
    </table> 
    ?> 

    // on the other page...page2.php 

    if (isset($_GET['process'])){ 
$foo = $_GET[$vector]; // the array i want 
echo var_dump($foo); 
    } 

回答

1

參數以數組形式傳遞。所以你必須解析請求的變量

這裏是你的代碼的修改版本。

<?php $vector = array("product1" => 150, "product2" => 120); ?> 
    <table> 
    <form action="page2.php" method="get"> 

    <?php foreach ($vector as $key => $value) { 
echo "<tr><td>Product: $name</td><td><input type='text' name='$key' 
    value='$value'/> 
    </td>"; 
    } 
    <tr> 
<td><input type="submit" name="process" value="Submit" /></td> 
    </tr> 
    </form> 
    </table> 
    ?> 

    // on the other page...page2.php 

    if (isset($_GET['process'])){ 
    unset($_GET['process']); 
    $foo = $_GET ; 
    echo var_dump($foo); 
} 
+0

你不必分析參數,你特別不希望依賴所有可能以'$ _GET'結尾的參數。 – Christian 2012-03-01 23:31:42

+0

基督徒我也知道這一點,但他想要發送完全相同的數組,以便通過$ _GET方法直接獲取數組,這就是爲什麼我只強調$ _GET方法 – 2012-03-01 23:45:52

+0

僅僅因爲它的工作原理並不意味着寫得很好。有許多更聰明的方法來避免這個問題,比如通過給數組索引加前綴。盲目依賴$ _GET中的內容是一個嚴重的問題。 – Christian 2012-03-01 23:49:07

1

嘗試只是使它

$foo = $_GET ; 

如果您不希望 '過程' 是在數組中,第一個電話

unset($_GET['process']); 
2

HTTP,通過設計,允許通過POST/GET的數組。只要具有相同名稱的相關項目,並具有兩個相對的方括號結尾,就像這樣:

<input type="text" name="data[]" value"First"/> 
<input type="text" name="data[]" value"Second"/> 

並在服務器上...

print_r($_REQUEST['data']); 

打印...

Array 
(
    [0] => First 
    [1] => Second 
) 

很方便,嗯?

相關問題