2011-07-27 56 views
1

我想通過表單提交傳遞一個值的數組。舉個例子:如何通過表單提交傳遞數組值?

example.com?value1=178&value2=345&value3=2356 

最簡單的解決辦法是爲我做以下,以獲得新的頁面上的值:

$value1=$_GET['value1']; 
$value2=$_GET['value2']; 
$value3=$_GET['value3']; 

是我遇到的困難是,後變通過表單傳遞的單詞'價值'會隨着每次提交而改變。所以,我修改了代碼爲傳遞:

example.com?value14=178&variable=14&value23=345&variable=23&value63=2356&variable=63 

正如你可以看到這裏,我已經過去了,從值作爲GET參數進來的變量。然後我嘗試GET這些值在提交的頁面上單獨顯示如下:

$variable=$_GET['variable'];  
$value=$_GET['value'.$variable]; 

echo $value . '<br>'; 

此代碼幾乎可用。我能夠得到最後通過顯示的數組。我怎樣才能修復這段代碼,讓所有傳入的值顯示在提交的頁面上?

回答

2

使用PHP的表單域排列標記:

val[]=178&val[]=14&val[]=345&etc... 

這將導致$ _GET [ 'VAL']是一個數組:

$_GET = array(
    'val' => array(178, 14, 345, etc...) 
) 

如果可以的話重新排列這樣的URL,你可以嘗試使用preg_grep:

$matches = preg_grep('/^variable\d+$/', array_keys($_GET)); 

which'll返回:

$matches= array('variable1', 'variable2', 'variable3', etc...); 
1

使用數組,例如像這樣不需要變量$變量。

example.com?value[14]=178&value[23]=345&value[63]=2356 

foreach ($_GET['value'] as $key => value) { 
    echo $key . " => " . $value . "<br/>"; 
} 

編輯:另一種方法用於獲取的值將被從那裏循環整個$ _GET - 陣列和解析值這樣的(變量總是在「值」,其次是X號的形式):

example.com?value14=178&value23=345&value63=2356 

$values = array(); 
foreach ($_GET as $key => $value) { 
    if (preg_match('/^value[\d]+$/', $key)) { 
     // remove "value" from the beginning of the key 
     $key = str_replace('value', '', $key); 
     // save result to array 
     $values[$key] = $value; 
    } 
}