使用 $request->post(); 获取全部参数
我的参数 是前端提交的json 表单,JSONRPC风格
不管你提交的是 对象还是数组 你打印出来的都是 数组类型
// 前端
Body 类型 : application/json
{
"method": "register",
"params": {}
}
// 后端
$post = $request->post();
return json([
is_array($post),
is_object($post),
gettype($post),
$post
]);
// 返回
[
true,
false,
"array",
{
"method": "register",
"params": {}
}
]
前端提交一个数组 和 对象 即可
去看了 Request $request 也没看出所以然来,好像PHP 没有 JSONArray JSONObject 类型
这里先给一个 PHP > 8.1.0 版本的方案
使用 array_is_list 判断是数组还是对象
array_is_list($request->post())
地址function.array-is-list.php
不知道你的目的是啥。$request->post() 数据类型是数组的话,你想变成 object有很多种方式。
array_is_list() 只是检测所给的数组是不是一个list.需要数组的第一个索引是0,然后所有的索引还必须连续。
$request->post() 不管你上传的是 json->[] 还是json->{} 数据 一律都是array 是php的问题,php 不管数组还是对象,内部都是 有序映射
它可以被视为数组、列表(向量)、哈希表(映射的实现)、字典、集合、堆栈、队列等等。
需要看一下这里:
https://github.com/walkor/workerman/blob/f0994fb9841907ea7f7c8d597f72f914a75339c0/src/Protocols/Http/Request.php#L491
如果你在header 里面指明了数据类型是 json的,那么 $request->post()返回的数据类型就是array.
我感觉你是想用: