Php 验证Laravel控制器中的JS阵列请求

Php 验证Laravel控制器中的JS阵列请求,php,arrays,laravel,validation,controller,Php,Arrays,Laravel,Validation,Controller,我只想确保来自JS端的数据是一个数组。因此可以看出,在验证中编写'array'就足够了。但就我而言,当我写作时: $request->validate([ 'tags' => 'array', ]); 然后使用传递一个数组[1,2,3],我得到一个错误[“标记必须是一个数组],php将其作为字符串处理,因此当我尝试获取第一个元素$request->tags[0],我会收到'['。这里有什么问题吗?传递[1,2,3]时,它看起来就像是,它不是一个数组,它实际上只是一个字符串。

我只想确保来自JS端的数据是一个数组。因此可以看出,在验证中编写
'array'
就足够了。但就我而言,当我写作时:

$request->validate([
    'tags' => 'array',
]);

然后使用传递一个数组
[1,2,3]
,我得到一个错误
[“标记必须是一个数组]
,php将其作为字符串处理,因此当我尝试获取第一个元素
$request->tags[0]
,我会收到
'['
。这里有什么问题吗?

传递
[1,2,3]时,它看起来就像是
,它不是一个数组,它实际上只是一个字符串。在PHP中,当您将字符串视为数组时,它将为您提供该字符,因此
$request->tags[0]
只是为您提供字符串中的第一个字符,即
[

使用postman并添加键值对时,请按如下方式设置键和值

+--------+-------+
| Key    | Value |
+--------+-------+
| tags[] | 1     |
| tags[] | 2     |
| tags[] | 3     |
+--------+-------+

这是一个特定于邮递员的问题,还是我必须在real JS中也做类似的事情?我不会称之为邮递员问题。这只是PHP在使用数组时希望查询字符串的格式。例如
test.PHP?tags=[1,2,3]
PHP将确定标记为字符串。
test.PHP?tags[]=1&tags[]=2&tags[]=3
PHP将决定是否是一个数组。如果您使用JS,根据您的操作方式,很有可能会为您处理。
<form ..>
  <input name="tags[]" value="1">
  <input name="tags[]" value="2">
  <input name="tags[]" value="2">
</form>

<script>
 //your code to serialise and post form through JS goes here
</script>
//TagsRequest.php
public function rules(){
  return [
    'tags'=>['array'],
    'tags.*'=>[
       //add rules for tags array elements
    ]
  ]

}