如何验证Laravel中的整数数组

Kol*_*ola 14 php arrays validation laravel laravel-4

我有一个像这样的整数数组 $someVar = array(1,2,3,4,5).我需要验证$someVar以确保每个元素都是数字.我怎么能这样做?

我知道对于单值变量的情况,验证规则将是这样的$rules = array('someVar'=>'required|numeric').如何将相同的规则应用于数组的每个元素$someVar

非常感谢您的帮助.

Aay*_*and 56

现在,laravel可以选择在数组元素上设置条件.无需为验证int数组这样的简单事物编写自己的验证器.使用此(如果在控制器中使用) -

$validator = \Validator::make(compact('someVar'), [
    'someVar' => 'required|array',
    'someVar.*' => 'integer'
]);
$this->validateWith($validator);
Run Code Online (Sandbox Code Playgroud)

要么

$this->validate($request, [
    'someVar' => 'array',
    'someVar.*' => 'int'
]);
Run Code Online (Sandbox Code Playgroud)


Iss*_*oli 16

Validator::extend('numericarray', function($attribute, $value, $parameters)
{
    foreach($value as $v) {
         if(!is_int($v)) return false;
    }
    return true;
});
Run Code Online (Sandbox Code Playgroud)

用它

$rules = array('someVar'=>'required|array|numericarray')
Run Code Online (Sandbox Code Playgroud)

  • @deczo是对的,关于使用is_array.所以,我修改了@Issam Zoli的代码如下:`Validator :: extend('numericarray',function($ attribute,$ value,$ parameters){if(is_array($ value)){foreach($ value as $ v) ){if(!is_int($ v))return false;} return true;} return is_int($ value);});`谢谢大家. (2认同)

小智 6

在Laravel 5中,您可以使用检查数组中的元素.*.对你来说这意味着:

$rules = array('someVar'   => 'required|array',
               'someVar.*' => 'integer')
Run Code Online (Sandbox Code Playgroud)


Mat*_*wak 5

从添加新的验证属性开始

Validator::extend('numeric_array', function($attribute, $values, $parameters)
{
    if(! is_array($values)) {
        return false;
    }

    foreach($values as $v) {
        if(! is_numeric($v)) {
            return false;
        }
    }

    return true;
});
Run Code Online (Sandbox Code Playgroud)

如果attribute不是数组或一个值不是数字值,则该函数将返回false。然后将消息添加到“ app / lang / en / validation.php”

"numeric_array"        => "The :attribute field should be an array of numeric values",
Run Code Online (Sandbox Code Playgroud)