如何通过表单提交传递数组值?

时间:2011-07-27 20:08:46

标签: php arrays forms get

我正在尝试通过表单提交传递一组值。举个例子:

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

我可以通过简单的解决方案来获取新页面上的值:

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

我遇到的困难是,通过表单传递'value'一词后面的变量会随着每次提交而改变。所以我修改了代码以传递为:

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

正如你在这里看到的,我现在已经将值作为GET参数传入。我的尝试然后获取这些值以在提交的页面上单独显示如下:

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

echo $value . '<br>';

此代码几乎可以使用。我能够获得传递给显示的最后一个数组。如何修复此代码以使所有传递的值显示在提交的页面上?

3 个答案:

答案 0 :(得分:2)

对表单字段使用PHP的数组表示法:

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

这将导致$ _GET ['val']成为一个数组:

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

如果您无法重新排列此类网址,可以尝试使用preg_grep:

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

将返回:

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

答案 1 :(得分:1)

使用数组,例如像这样,不需要变量$ variable。

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

foreach ($_GET['value'] as $key => value) {
    echo $key . " => " . $value . "<br/>";
}
编辑:获取值的另一种方法是循环整个$ _GET -array并从那里解析值(变量总是以“value”的形式后跟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;
    }
}

答案 2 :(得分:0)