为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 URL 获取所有 GET 值?(缺失值)

如何从 URL 获取所有 GET 值?(缺失值)

PHP
慕后森 2021-12-03 15:13:51
我正在遍历 GET 值并且只得到 13 个值,无论我提交什么 URL。此外,它没有按顺序获取值...当我循环时,我只得到 13 个值,以及当我在 $_GET 本身上使用 var_dump 时;即使有更多的值要检索。这是网址:website.com/Questionaire.php?SurveyName=TV%20Quiz&SurveyType=MultipleChoice&Q1=Choose%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=Favorite%20Nickelodeon%20show?&A1=Hey%20Arnold!&A2=Rugrats&A8=Ahhhh!%20Real%20Montsters这是我的结果:SurveyName: TV QuizSurveyType: MultipleChoiceQ1: Choose a character off of Happy Days?A1: Hey Arnold!A2: RugratsA3: Jack CrackerQ3: Favorite Friends character?A4: JoeyA5: RachelA6: ChandlerA7: PhoebeQ8: Favorite Nickelodeon show?A8: Ahhhh! Real Montsters如您所见,结果不是按顺序排列的,甚至缺少某些值。var_dump($_GET);foreach ($_GET as $key => $value) {     echo $key.": ".$value."<br/>\n";}我期待这些结果:SurveyName=TV QuizSurveyType=MultipleChoiceQ1=Choose a character off of Happy Days?A1=Benny the bull //<- missedA2=The Fonz //<- missedA3=Jack CrackerQ3=Favorite Friends character?A1=Ross //<- missedA2=Monica //<- missedA4=JoeyA5=RachelA6=ChandlerA7=PhoebeQ8=Favorite Nickelodeon show?A1=Hey Arnold!A2=RugratsA8=Ahhhh! Real Montsters
查看完整描述

2 回答

?
潇湘沐

TA贡献1816条经验 获得超6个赞

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


foreach($param as $key=>$val) {

    $_GET[$key] = $val;

}

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


array(

    'A'=>3,

    'B'=>2,

    'C'=>4

);

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


查看完整回答
反对 回复 2021-12-03
?
莫回无

TA贡献1865条经验 获得超7个赞

我建议对查询字符串参数名称使用数组表示法,以便保持顺序。就像是:


?SurveyName=TV Quiz

&SurveyType=MultipleChoice

&Q[1]=Choose a character off of Happy Days?

&A[1][1]=Benny the bull

&A[1][2]=The Fonz

&A[1][3]=Jack Cracker

&Q[3]=Favorite Friends character?

&A[3][1]=Ross

&A[3][2]=Monica

&A[3][4]=Joey

&A[3][5]=Rachel

&A[3][6]=Chandler

&A[3][7]=Phoebe

&Q[8]=Favorite Nickelodeon show?

&A[8][1]=Hey Arnold!

&A[8][2]=Rugrats

&A[8][8]=Ahhhh! Real Montsters

当您像这样命名查询字符串参数时,PHP 会将它们解析为数组:


array(4) {

  ["SurveyName"]=>

  string(7) "TV Quiz"

  ["SurveyType"]=>

  string(14) "MultipleChoice"

  ["Q"]=>

  array(3) {

    [1]=>

    string(37) "Choose a character off of Happy Days?"

    [3]=>

    string(27) "Favorite Friends character?"

    [8]=>

    string(26) "Favorite Nickelodeon show?"

  }

  ["A"]=>

  array(3) {

    [1]=>

    array(3) {

      [1]=>

      string(14) "Benny the bull"

      [2]=>

      string(8) "The Fonz"

      [3]=>

      string(12) "Jack Cracker"

    }

    [3]=>

    array(6) {

      [1]=>

      string(4) "Ross"

      [2]=>

      string(6) "Monica"

      [4]=>

      string(4) "Joey"

      [5]=>

      string(6) "Rachel"

      [6]=>

      string(8) "Chandler"

      [7]=>

      string(6) "Phoebe"

    }

    [8]=>

    array(3) {

      [1]=>

      string(11) "Hey Arnold!"

      [2]=>

      string(7) "Rugrats"

      [8]=>

      string(21) "Ahhhh! Real Montsters"

    }

  }

}


查看完整回答
反对 回复 2021-12-03
  • 2 回答
  • 0 关注
  • 221 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信