我正在尝试通过表单提交传递一组值。举个例子:
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>';
此代码几乎可以使用。我能够获得传递给显示的最后一个数组。如何修复此代码以使所有传递的值显示在提交的页面上?
答案 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)