php type error,ThinkPHP5错误解析之variable type error:array

在TP5的post提交方式中,有一个坑爹的bug就是post提交数据不能提交数组。

请注意是不能提交数组形式的数据,而不是单纯的数据。举个例子:注意以下2种格式数据的比较:

第一种:普通的数据提交,这种格式的数据在TP5中用post提交,$request->post(‘参数’);可以接受数据。

//js,

{

'data':123,

'id':1,

'name':'user'

}

下面看坑爹的第二种:

{

'data':[1,2,3,4,5],

'id':1,

'name':'user'

}

这种形式的数据同过POST提交数据在TP5框架内通过$request->post(‘参数’);去接收就会报错。

variable type error:array

这是因为tp5不能用post去接收数组‘data’:[1,2,3,4,5]这种数据。在通过request的post方法取获取时,post方法不能分辨它是否是数组。

所以在想不改变post提交方式的情况下,解决办法之一就是用/a。(这里的/a就相当于告诉解析器我要获取一个数组。)

将原来的接收方式参数修改为:

Request::instance()->post('参数/a');

比如在本文的例子中就可以修改为:$request->post(‘data/a’):

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
tp6报错"variable type error: array"的原因可能是因为在tp6中,无法直接返回数组类型的数据。tp6框架不支持直接将数组作为返回值返回给前端。这可能是因为tp6框架对返回值类型有一定的要求,需要返回一种特定的数据类型。 解决这个问题的方法可以有两种: 1. 将返回的数组数据进行序列化,然后再返回给前端。可以使用json_encode()函数将数组转换为json格式的字符串,然后再返回给前端。这样前端就可以正常接收到数据。这是一种推荐的方法。 2. 可以修改tp6框架中的配置文件config.php,将default_return_type修改为json。这样所有的接口都将以json格式返回数据。但是这种方法可能会影响到其他的接口,所以不太推荐使用。 另外,如果报错是因为上传的数据中含有数组数据,可以通过以下两种方法解决: 1. 将数据进行JSON序列化,然后在后端进行反序列化。这样可以保留数组的结构并正常处理数据。 2. 使用Request::instance()->post('参数/a')来获取数据。其中/a告诉解析器我们要获取一个数组。 综上所述,tp6报错"variable type error: array"的解决方法是将返回的数组数据进行序列化,或者修改tp6的配置文件,或者处理上传的含有数组数据的数据。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ThinkPHP5 报错variable type errorarrayPHP报错)](https://blog.csdn.net/qq_17627195/article/details/127976632)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值