首页 > 解决方案 > 使用 Laravel 验证检查数组中的值是否在另一个数组中

问题描述

我想检查我的输入(一个数组)的所有值是否都在另一个数组中。例如:

$my_arr = ['item1', 'item2', 'item3', 'item4'];

Validator::make($request, [
            'item' => [ /* what do i put here??? */ ],
        ]);

我认为该规则不起作用in,因为它需要单个值作为输入,而不是数组。 in_array也不行。我尝试过创建自定义规则或闭包,但这些都不允许我传入参数(我要检查的数组)。特别是因为我希望多个数组具有相同的功能,对于不同的输入,如果有一个通用规则适用于我给它的任何数组,那就太好了。

如果那不可能,我想我需要为每个特定数组创建一个规则并!array_diff($search_this, $all)按照这个答案所说的那样使用。有没有替代方案?

标签: phparrayslaravellaravel-validation

解决方案


确实in不接受数组而是字符串。因此,您可以将数组转换为字符串。

$my_arr = ['item1', 'item2', 'item3', 'item4'];

Validator::make($request, [
   'item' => [ 'in:' . implode(',', $my_arr) ],
]);

内爆

另一个更好的解决方案可能是使用接受数组Illuminate\Validation\Rule的 's方法:in

'item' => [ Rule::in($my_arr) ],

Laravel 验证 - 规则::in


推荐阅读