如何让PHP将URL的GET参数直接解析为数组?
解决方案
方法1:修改客户端参数格式,让PHP自动解析为数组
PHP默认会识别array[]=xxx&array[]=yyy这类格式的GET参数并直接解析为数组。你可以调整前端代码,放弃JSON序列化,直接构造符合PHP参数规范的请求串:
前端代码示例:
let url = window.location.href.split('?')[0]; const array = [1010, 1020, 1030]; // 用URLSearchParams便捷构造参数 const params = new URLSearchParams(); array.forEach(item => { params.append('array[]', item); }); url += "?" + params.toString();
生成的URL解码后为:https://www.test.com?array[]=1010&array[]=1020&array[]=1030
此时PHP端直接调用$_GET['array']就能拿到数组:
var_dump($_GET['array']); // 输出:array(3) { [0]=> string(4) "1010" [1]=> string(4) "1020" [2]=> string(4) "1030" }
方法2:服务端直接解析JSON字符串为数组
如果不想改动前端代码,PHP可以用json_decode()将获取到的JSON字符串直接转为数组:
$array = json_decode($_GET['array'], true); var_dump($array); // 输出:array(3) { [0]=> string(4) "1010" [1]=> string(4) "1020" [2]=> string(4) "1030" }
json_decode的第二个参数设为true,会将JSON结构转为PHP数组(JSON数组对应索引数组,JSON对象对应关联数组)。
内容的提问来源于stack exchange,提问作者toffler
相关产品推荐
相关产品推荐

