PHP Predicates
last modified March 12, 2025
In this article, we explore predicates in PHP. A predicate is a
function that returns a boolean value, typically used to test conditions or
validate data. Predicates are useful for filtering, validating, or making
decisions in code.
Basic Definition
A predicate is a function that takes one or more arguments and returns
true or false. Predicates are often used in
functional programming to filter arrays, validate inputs, or make decisions.
Simple Predicate
The following example demonstrates a simple predicate that checks if a number is even.
<?php
declare(strict_types=1);
function isEven(int $number): bool
{
return $number % 2 === 0;
}
$result = isEven(4);
echo $result ? 'true' : 'false';
In this program, the isEven function is a predicate that checks
if a number is even. It returns true if the number is even and
false otherwise.
$ php main.php true
Predicate with Array Filtering
The following example demonstrates how to use a predicate to filter an array.
<?php
declare(strict_types=1);
function isPositive(int $number): bool
{
return $number > 0;
}
$numbers = [-1, 2, -3, 4, -5];
$positiveNumbers = array_filter($numbers, 'isPositive');
print_r($positiveNumbers);
In this program, the isPositive predicate filters out negative
numbers from the array. The array_filter function applies the
predicate to each element of the array.
$ php main.php
Array
(
[1] => 2
[3] => 4
)
Predicate with Anonymous Function
The following example demonstrates how to use an anonymous function as a predicate.
<?php
declare(strict_types=1);
$numbers = [1, 2, 3, 4, 5];
$evenNumbers = array_filter($numbers, function(int $number): bool {
return $number % 2 === 0;
});
print_r($evenNumbers);
In this program, an anonymous function is used as a predicate to filter even
numbers from the array. The array_filter function applies the
predicate to each element of the array.
$ php main.php
Array
(
[1] => 2
[3] => 4
)
Predicate with Multiple Conditions
The following example demonstrates a predicate with multiple conditions.
<?php
declare(strict_types=1);
function isValidEmail(string $email): bool
{
return filter_var($email, FILTER_VALIDATE_EMAIL) !== false;
}
$emails = ['test@example.com', 'invalid-email', 'user@domain.com'];
$validEmails = array_filter($emails, 'isValidEmail');
print_r($validEmails);
In this program, the isValidEmail predicate checks if an email
is valid using PHP's filter_var function. The
array_filter function applies the predicate to each element of
the array.
$ php main.php
Array
(
[0] => test@example.com
[2] => user@domain.com
)
Predicate with Object Validation
The following example demonstrates a predicate that validates an object.
<?php
declare(strict_types=1);
class User
{
public function __construct(public int $age) {}
}
function isAdult(User $user): bool
{
return $user->age >= 18;
}
$users = [new User(15), new User(20), new User(17)];
$adults = array_filter($users, 'isAdult');
print_r($adults);
In this program, the isAdult predicate checks if a user is an
adult based on their age. The array_filter function applies the
predicate to each element of the array.
$ php main.php
Array
(
[1] => User Object
(
[age] => 20
)
)
Predicate with Strict Type Declaration
The following example demonstrates a predicate with strict type declaration.
<?php
declare(strict_types=1);
function isStringLong(string $text): bool
{
return strlen($text) > 10;
}
$texts = ['short', 'a longer text', 'another long text'];
$longTexts = array_filter($texts, 'isStringLong');
print_r($longTexts);
In this program, the isStringLong predicate checks if a string
is longer than 10 characters. The array_filter function applies
the predicate to each element of the array.
$ php main.php
Array
(
[1] => a longer text
[2] => another long text
)
Source
PHP Anonymous Functions - Documentation
In this article, we have shown how to use predicates in PHP for filtering, validation, and decision-making. Predicates are a powerful tool for writing clean and reusable code.
Author
List all PHP tutorials.