Caution
The documentation you are viewing is for an older version of this component.
Switch to the latest (v3) version.
Validators
Number Comparison Validator
Laminas\Validator\NumberComparison allows you to validate if a given value is a numeric value that is either:
- Between a min and max value
- Greater than a min value
- Less than a max value
By default, comparisons are inclusive.
Only supports number validation
Laminas\Validator\NumberComparison supports only the validation of numbers.
Strings or dates can not be validated with this validator.
Supported Options
The following options are supported for Laminas\Validator\NumberComparison:
| Option | Data Type | Default Value | Description |
|---|---|---|---|
max |
numeric |
null |
Sets the upper bound for the input. |
min |
numeric |
null |
Sets the lower bound for the input. |
inclusiveMin |
bool |
true |
Defines if the validation is inclusive of the lower bound, or exclusive. |
inclusiveMax |
bool |
true |
Defines if the validation is inclusive of the upper bound, or exclusive. |
Basic Usage
Per default, this validator checks if a value is between min and max where both upper and lower bounds are considered valid.
$valid = new Laminas\Validator\NumberComparison(['min' => 0, 'max' => 10]);
$value = 10;
$result = $valid->isValid($value);
// returns true
In the above example, the result is true due to the reason that the default search is inclusive of the border values.
This means in our case that any value from 0 to 10 is allowed; values like -1 and 11 will return false.
Excluding Upper and Lower Bounds
Sometimes it is useful to validate a value by excluding the bounds. See the following example:
$valid = new Laminas\Validator\NumberComparison([
'min' => 0,
'max' => 10,
'inclusiveMin' => false,
'inclusiveMax' => false,
]);
$valid->isValid(10); // false
$valid->isValid(0); // false
$valid->isValid(9); // true
The example above is almost identical to our first example, but we now exclude the bounds as valid values; as such, the values 0 and 10 are no longer allowed and will return false.
Min and Max behaviour
In order to validate a number that is simply greater than a lower bound, either omit the max option, or set it explicitly to null:
$validator = new Laminas\Validator\NumberComparison(['min' => 10, 'max' => null]);
$validator->isValid(12345); // true
Conversely, to ensure a number is less than an upper bound, omit the min option or explicitly set it to null:
$validator = new Laminas\Validator\NumberComparison(['max' => 5]);
$validator->isValid(99); // false
You must provide one of the min or the max (or both) options or an exception will be thrown.
It doesn't make sense to compare the input to nothing for this validator.