PHP获取POST参数contact[uid]存入变量的方法求助
解决PHP中POST嵌套参数的获取问题
问题场景
我有两种POST请求格式:
一种是简单键值对格式:event=message&token=xyz另一种是带嵌套结构的格式:
&contact[uid]=123456789&contact[name]=TestUser我尝试用下面的代码获取
contact[uid]的值并存入数组,但无法生效:$array = array($_POST['event'],$_POST['token'],$_POST['contact[name]']);求解决方法。
解决方案
别担心,这是PHP处理POST参数时超常见的小坑!当POST参数里带[]这种数组式命名时,PHP会自动把它解析成关联数组,而不是普通的字符串键名,所以你的写法才会失效。
正确的获取方式应该是这样的:
// 直接通过嵌套数组访问contact下的uid $array = array( $_POST['event'], $_POST['token'], $_POST['contact']['uid'] );
为什么之前的写法不行?
当POST数据里出现contact[uid]这种格式时,PHP会自动将contact解析为一个数组,把uid作为它的键,对应的值就是123456789。你不能用contact[name]作为字符串键去$_POST里查找,而是要先访问$_POST['contact']这个数组,再取里面的uid或者name键。
额外的健壮性提示
为了避免因为参数缺失导致的PHP警告,建议在获取参数前先做存在性判断:
// 用三元运算符处理参数默认值 $event = isset($_POST['event']) ? $_POST['event'] : ''; $token = isset($_POST['token']) ? $_POST['token'] : ''; $contactUid = isset($_POST['contact']['uid']) ? $_POST['contact']['uid'] : ''; $array = array($event, $token, $contactUid);
这样哪怕某个参数没传,代码也能平稳运行,不会抛出警告信息~
内容的提问来源于stack exchange,提问作者Pascal Bähr
相关产品推荐
相关产品推荐

