Skip to content

🚫 Filter out entries based on the array properties

License

Notifications You must be signed in to change notification settings

graze/array-filter

Repository files navigation

array-filter

Latest Version on Packagist Software License Build Status Coverage Status Quality Score Total Downloads

Array Filtering

Install

Via Composer

$ composer require graze/array-filter

Usage

Filter Factory

There is a factory which takes in a set of string definitions and creates filters based on each one

$config = [
    'name ~' => '/test.*/i',
    'ctime >' => '{date:yesterday:U}',
    'status in' => [1, 2],
];
$input = [[
    'name' => 'test1234',
    'ctime' => 142353782,
    'status' => 2,
]];
$factory = new FilterFactory(new ValueFactory());
$filter = $factory->createFilters($config);
$filtered = array_filter($input, $filter);

Respect/Validator and other callable functions Compatible

$filter = new AllOfFilter();
$filter->addFilter(new ClosureFilter('name', v::regex('/test.*/i')))
       ->addFilter(v::key('ctime', v::date()->between('yesterday', 'today'))
       ->addFilter(function (array $data) {
           return isset($data['status']) && in_array($data['status'], [1, 2]);
       });

$filtered = array_filter($input, $filter);

Testing

$ make
$ make test

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

The MIT License (MIT). Please see License File for more information.