Array Rules
Array validation rules check array structure and content.
Rules Reference
Section titled “Rules Reference”| Rule | Parameters | Example | Error Message |
|---|---|---|---|
array | — | $v->rule('array', 'field') | {field} must be an array |
in | values | $v->rule('in', 'field', ['a', 'b']) | {field} must be one of the allowed values |
notIn | values | $v->rule('notIn', 'field', ['x', 'y']) | {field} must not be one of the disallowed values |
listContains | value, strict? | $v->rule('listContains', 'field', 'val') | {field} must contain {0} |
subset | values | $v->rule('subset', 'field', ['a', 'b']) | {field} must be a subset of the allowed values |
containsUnique | — | $v->rule('containsUnique', 'field') | {field} must contain unique values |
arrayHasKeys | keys | $v->rule('arrayHasKeys', 'field', ['a']) | {field} must contain all required keys |
Note: Parameters marked with
?are optional.
Parameter Details
Section titled “Parameter Details”listContains
Section titled “listContains”The strict parameter enables strict type comparison (===):
$v->rule('listContains', 'ids', '1'); // matches int 1$v->rule('listContains', 'ids', '1', true); // doesn't match int 1For associative arrays, checks keys not values.
arrayHasKeys
Section titled “arrayHasKeys”Only checks key existence, not value validity.
Complete Examples
Section titled “Complete Examples”Valicomb supports two syntax styles: rule-based (map rules to fields) and field-based (map fields to rules).
Rule-Based Array Syntax
Section titled “Rule-Based Array Syntax”use Frostybee\Valicomb\Validator;
$v = new Validator($data);
$v->rules([ 'array' => [ ['tags'], ['permissions'] ], 'in' => [ ['status', ['pending', 'approved', 'rejected']], ['priority', ['low', 'medium', 'high']] ], 'notIn' => [ ['username', ['admin', 'root', 'system']], ['role', ['superadmin']] ], 'listContains' => [ ['permissions', 'read'], ['tags', 'featured'] ], 'subset' => [ ['selected_colors', ['red', 'green', 'blue', 'yellow']], ['categories', ['tech', 'news', 'sports', 'entertainment']] ], 'containsUnique' => [ ['tags'], ['email_recipients'] ], 'arrayHasKeys' => [ ['address', ['street', 'city', 'zip']], ['payment', ['method', 'amount']] ]]);
$v->validate();Field-Based Mapping
Section titled “Field-Based Mapping”use Frostybee\Valicomb\Validator;
$v = new Validator($data);
$v->mapManyFieldsToRules([ 'status' => ['required', ['in', ['draft', 'published', 'archived']]], 'tags' => ['required', 'array', 'containsUnique', ['subset', ['php', 'javascript', 'python', 'go']]], 'permissions' => ['required', 'array', ['listContains', 'read']], 'username' => ['required', ['notIn', ['admin', 'root', 'moderator']]], 'address' => ['required', 'array', ['arrayHasKeys', ['street', 'city', 'country']]], 'categories' => ['optional', 'array', ['subset', ['tech', 'news', 'lifestyle']]]]);
$v->validate();