首页 > 解决方案 > 如何从 URL 获取所有 GET 值?(缺失值)

问题描述

我正在遍历 GET 值并且只获得 13 个值,无论我提交什么 URL。此外,它没有按顺序获取值......

当我循环时,我只得到 13 个值,以及当我在 $_GET 本身上使用 var_dump 时;即使有更多的值要检索。

这是网址:

website.com/Questionaire.php?SurveyName=TV%20Quiz&SurveyType=MultipleChoice&Q1=选择%20a%20character%20off%20of%20Happy%20Days?&A1=Benny%20the%20bull&A2=The%20Fonz&A3=Jack%20Cracker&Q3=Favorite%20Friends% 20character?&A1=Ross&A2=Monica&A4=Joey&A5=Rachel&A6=Chandler&A7=Phoebe&Q8=最爱%20Nickelodeon%20show?&A1=嘿%20Arnold!&A2=Rugrats&A8=Ahhhh!%20Real%20Montsters

这是我的结果:

SurveyName: TV Quiz

SurveyType: MultipleChoice

Q1: Choose a character off of Happy Days?

A1: Hey Arnold!

A2: Rugrats

A3: Jack Cracker

Q3: Favorite Friends character?

A4: Joey

A5: Rachel

A6: Chandler

A7: Phoebe

Q8: Favorite Nickelodeon show?

A8: Ahhhh! Real Montsters

如您所见,结果不是按顺序排列的,甚至缺少一些值。

var_dump($_GET);

foreach ($_GET as $key => $value) { 
    echo $key.": ".$value."<br/>\n";
}

我期待这些结果:

SurveyName=TV Quiz

SurveyType=MultipleChoice

Q1=Choose a character off of Happy Days?

A1=Benny the bull //<- missed

A2=The Fonz //<- missed

A3=Jack Cracker

Q3=Favorite Friends character?

A1=Ross //<- missed

A2=Monica //<- missed

A4=Joey

A5=Rachel

A6=Chandler

A7=Phoebe

Q8=Favorite Nickelodeon show?

A1=Hey Arnold!

A2=Rugrats

A8=Ahhhh! Real Montsters

标签: phpgetquery-string

解决方案


您的查询字符串中不能有相同的参数名称,否则最后一个值将覆盖以前的值。您需要有唯一的答案名称,否则您将丢失数据。您可以想象 PHP$_GET使用以下伪代码添加参数:

foreach($param as $key=>$val) {
    $_GET[$key] = $val;
}

因此,参数按照它们在请求中首次出现的顺序出现。所以查询字符串?A=1&B=2&A=3&C=4A首先出现,然后B是 ,最后是C。相同参数的最后一个值是使用的那个,所以我们得到以下$_GET结果:

array(
    'A'=>3,
    'B'=>2,
    'C'=>4
);

考虑添加问题标识符作为每个答案的前缀。例如,代替A1doQ1A1Q2A1。这将确保您的数据不会被覆盖。


推荐阅读