php - 使用 Laravel 验证检查数组中的值是否在另一个数组中
问题描述
我想检查我的输入(一个数组)的所有值是否都在另一个数组中。例如:
$my_arr = ['item1', 'item2', 'item3', 'item4'];
Validator::make($request, [
'item' => [ /* what do i put here??? */ ],
]);
我认为该规则不起作用in
,因为它需要单个值作为输入,而不是数组。 in_array
也不行。我尝试过创建自定义规则或闭包,但这些都不允许我传入参数(我要检查的数组)。特别是因为我希望多个数组具有相同的功能,对于不同的输入,如果有一个通用规则适用于我给它的任何数组,那就太好了。
如果那不可能,我想我需要为每个特定数组创建一个规则并!array_diff($search_this, $all)
按照这个答案所说的那样使用。有没有替代方案?
解决方案
确实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) ],