PHP中如何获取GET请求中同名参数的完整数组?
解决PHP中获取同名GET/POST参数数组的问题
问题根源:PHP默认会对同名的GET/POST参数进行覆盖,只保留最后一个传入的值,所以你看到的只有
151。要让PHP将同名参数识别为数组,需要修改参数的命名格式。直接解决方案(修改URL/表单):
在参数名末尾加上[],这样PHP会自动将所有同名参数打包成数组:- 修改后的GET URL:
http://localhost/includes/runner_AddToEvent.php?eventSelector[]=155&eventSelector[]=154&eventSelector[]=151 - 此时执行
var_dump($_GET['eventSelector']);,会得到包含三个值的数组:array(3) { [0]=> string(3) "155" [1]=> string(3) "154" [2]=> string(3) "151" } - 如果是POST表单,只需将表单元素的
name属性设为eventSelector[],提交后$_POST['eventSelector']同样会是数组。
- 修改后的GET URL:
无法修改URL时的替代方案:
要是你没法修改原始URL,可以手动解析请求字符串:$queryParts = explode('&', $_SERVER['QUERY_STRING']); $eventSelectors = []; foreach ($queryParts as $part) { list($key, $value) = explode('=', $part); if ($key === 'eventSelector') { $eventSelectors[] = urldecode($value); } } var_dump($eventSelectors);这段代码会遍历所有请求参数,把所有
eventSelector的值收集到数组里。
内容的提问来源于stack exchange,提问作者Guido
相关产品推荐
相关产品推荐

