【问题标题】:Check if elements in array are elements in another array in Laravel Validator检查数组中的元素是否是 Laravel Validator 中另一个数组中的元素
【发布时间】:2020-06-13 18:23:22
【问题描述】:

我想通过验证输入中的所有元素是否是另一个数组的一部分来验证数组。例如,假设我有三个数组:

$foo = ['John', 'Terry', 'Kim'];
$bar = ['John', 'Kim'];
$sub = ['John', 'Ringo'];

我有一个名为CompareArrays() 的函数。执行CompareArrays($foo, $bar) 将导致true,因为$bar 中的所有元素都存在于$foo 中。但是,CompareArrays($foo, $sub) 将导致false,因为Ringofoo 中不存在。在 vanilla php 中实现这个是

!array_diff($foo, $bar)

我如何在 Laravel 验证器中做到这一点不制定自定义规则(v6.10)?

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您可以使用in_array:anotherfield.* 规则

    use Illuminate\Validation\Rule;
    //...
    
    $request->validate([
        'arr1' => 'required|array',
        'arr2' => 'nullable|array',
        'arr2.*' => [Rule::requiredIf($request->filled('arr1')), 'in_array:arr1.*']
        /...
    ]);
    

    【讨论】:

    • 如果arr1不是请求的一部分,有什么办法吗?
    • 你可以通过$request->request->add(['arr1' => ['items']]);将你的arr1合并到$request obj中
    猜你喜欢
    • 2021-01-30
    • 1970-01-01
    • 2010-10-06
    • 2021-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 2022-01-02
    相关资源
    最近更新 更多