Laravel 8表单验证报错array_map():参数2应为数组传入值为null
报错根因
核心问题是验证规则定义时的引号书写错误:
初始化验证器的代码中,use_filters 字段的规则使用了**反引号()**包裹boolean,而非单/双引号。 PHP中反引号是内置的shell执行运算符,会尝试将包裹的内容作为系统命令执行,系统中不存在boolean这个命令,执行后返回值为null,最终传入验证器的规则数组实际为 ['use_filters' => null]。Laravel底层的验证规则解析器处理规则时,调用array_map`遍历字段规则,期望第二个参数为数组类型,实际接收到null,就触发了你看到的报错。
错误代码片段如下:
$validator = Validator::make($request->all(), [ // 这里错误使用了反引号,而非单引号 'use_filters' => `boolean` ]);
修复方案
将包裹boolean规则的反引号替换为单引号(或双引号)即可,修正后的代码:
$validator = Validator::make($request->all(), [ 'use_filters' => 'boolean' ]);
其余的条件验证sometimes逻辑、后续业务查询逻辑均无问题,修正引号后报错会直接消失。
内容的提问来源于stack exchange,提问作者Ryan H
相关产品推荐
相关产品推荐

