使用 Laravel 验证检查数组中的值是否在另一个数组中
Check if values in array are in another array using Laravel Validation
我想检查我的输入(一个数组)的所有值是否都在另一个数组中。例如:
$my_arr = ['item1', 'item2', 'item3', 'item4'];
Validator::make($request, [
'item' => [ /* what do i put here??? */ ],
]);
我认为规则 in
行不通,因为它需要单个值作为输入,而不是数组。 in_array
也不行。我试过创建自定义规则或闭包,但它们都不允许我传入参数(我要检查的数组)。特别是因为我希望多个数组具有相同的功能,对于不同的输入,如果有一个适用于我给它的任何数组的通用规则会很好。
如果那不可能,我想我需要为每个特定数组创建一个规则并使用 !array_diff($search_this, $all)
作为 this answer 所说。有替代方案吗?
没错,in
不接受数组,而是接受字符串。所以你可以把数组转换成字符串。
$my_arr = ['item1', 'item2', 'item3', 'item4'];
Validator::make($request, [
'item' => [ 'in:' . implode(',', $my_arr) ],
]);
另一个更好的解决方案可能是使用 Illuminate\Validation\Rule
的 in
接受数组的方法:
'item' => [ Rule::in($my_arr) ],
我想检查我的输入(一个数组)的所有值是否都在另一个数组中。例如:
$my_arr = ['item1', 'item2', 'item3', 'item4'];
Validator::make($request, [
'item' => [ /* what do i put here??? */ ],
]);
我认为规则 in
行不通,因为它需要单个值作为输入,而不是数组。 in_array
也不行。我试过创建自定义规则或闭包,但它们都不允许我传入参数(我要检查的数组)。特别是因为我希望多个数组具有相同的功能,对于不同的输入,如果有一个适用于我给它的任何数组的通用规则会很好。
如果那不可能,我想我需要为每个特定数组创建一个规则并使用 !array_diff($search_this, $all)
作为 this answer 所说。有替代方案吗?
没错,in
不接受数组,而是接受字符串。所以你可以把数组转换成字符串。
$my_arr = ['item1', 'item2', 'item3', 'item4'];
Validator::make($request, [
'item' => [ 'in:' . implode(',', $my_arr) ],
]);
另一个更好的解决方案可能是使用 Illuminate\Validation\Rule
的 in
接受数组的方法:
'item' => [ Rule::in($my_arr) ],