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。这将确保您的数据不会被覆盖。
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"
}
}
}
- 2 回答
- 0 关注
- 221 浏览
添加回答
举报