有关thinkPHP框架POST方式接收数组出现variable type error:array的报错

最近在处理tp5接收一个查询条件数组的时候,发现一个问题

1、错误复现

 $data= Request::instance()->param('SelectOption');

提示报错
variable type error:array
嗯,当时感觉也没哪里逻辑错了
切换到助手函数测试一下

 $data= Input('SelectOption');

还是同样的报错
于是去细查tp5的官网文档

问题原因

TP5默认获取当前请求的所有变量都是经过过滤过的

// 获取当前请求的所有变量(经过过滤)
Request::instance()->param();
// 获取当前请求的所有变量(原始数据)
Request::instance()->param(false);

ThinkPHP5.0版本默认的变量修饰符是/s 转为String了,强制转换为字符串类型。

解决方案

在接收数组传参的时候
参数名后面加上/a,将接收的变量强制转换为数组

$data= Input('SelectOption/a');

或者

$data= Request::instance()->param('SelectOption/a');

打印出来的就是正常参数了

你可能感兴趣的:(thinkPHP)