我有一个传递类似于URL的表单
?choice=selection+A&choice=selection+C
我正在以类似的形式收集它(我记得$ _GET是任何数组)
$temp = $_GET["choice"];
print_r($temp);
我只获得最后一个实例“选择C”。我缺少什么
答案 0 :(得分:6)
我假设'选择'是某种多选或复选框组?如果是这样,请将html中的名称更改为“choice []”。 $ _GET ['choice']将是用户所做选择的数组。
答案 1 :(得分:2)
如果您不打算编辑HTML,这将允许您执行您要执行的操作;它将填充$_REQUEST
超全局并覆盖其内容。
这假定PHP版本5.3,因为它使用三元快捷操作符。这可以删除。
$rawget = isset($_SERVER['QUERY_STRING']) ? $_SERVER['QUERY_STRING'] : false;
$rawpost = file_get_contents('php://input') ?: false;
$target = $rawget;
$_REQUEST = array();
if ($target !== false) {
$pairs = explode('&',$rawget);
foreach($pairs as $pair) {
$p = strpos($pair,'=');
if ($p === false && !empty($pair)) {
$_REQUEST[$pair] = null;
}
elseif ($p === 0 || empty($pair)) {
continue;
}
else {
list($name, $value) = explode('=',$pair,2);
$name = preg_replace('/\[.*\]/','',urldecode($name));
$value = urldecode($value);
if (array_key_exists($name, $_REQUEST)) {
if (is_array($_REQUEST[$name])) {
$_REQUEST[$name][] = $value;
}
else {
$_REQUEST[$name] = array($_REQUEST[$name], $value);
}
}
else {
$_REQUEST[$name] = $value;
}
}
}
}
就目前而言,这只会处理QueryString / GET变量;要处理帖子,将第3行更改为
$target = ($rawget ?: '') . '&' . ($rawpost ?: '');
所有这一切,我仍然建议更改HTML,但如果这不是任何理由的选项,那么这应该这样做。