ArrayLookup
ArrayLookup copied to clipboard
🚀 A fast lookup library that help you verify and search array and Traversable data.
ArrayLookup
Introduction
ArrayLookup is a fast lookup library that help you verify and search array
and Traversable
data.
Features
- [x] Verify at least times:
once()
,twice()
,times()
- [x] Verify exact times:
once()
,twice()
,times()
- [x] Search data:
first()
,last()
,rows()
Installation
Require this library uses composer.
composer require samsonasik/array-lookup
Usage
A. AtLeast
1. AtLeast::once()
It verify that data has filtered found item at least once.
use ArrayLookup\AtLeast;
$data = [1, 2, 3];
$filter = static fn($datum): bool => $datum === 1;
var_dump(AtLeast::once($data, $filter)) // true
$data = [1, 2, 3];
$filter = static fn($datum): bool => $datum === 4;
var_dump(AtLeast::once($data, $filter)) // false
// WITH key array included, pass $key variable as 2nd arg on filter to be used in filter
$data = [1, 2, 3];
$filter = static fn($datum, $key): bool => $datum === 1 && $key >= 0;
var_dump(AtLeast::once($data, $filter)) // true
$data = [1, 2, 3];
$filter = static fn($datum, $key): bool => $datum === 4 && $key >= 0;
var_dump(AtLeast::once($data, $filter)) // false
2. AtLeast::twice()
It verify that data has filtered found items at least twice.
use ArrayLookup\AtLeast;
$data = [1, "1", 3];
$filter = static fn($datum): bool => $datum == 1;
var_dump(AtLeast::twice($data, $filter)) // true
$data = [1, "1", 3];
$filter = static fn($datum): bool => $datum === 1;
var_dump(AtLeast::twice($data, $filter)) // false
// WITH key array included, pass $key variable as 2nd arg on filter to be used in filter
$data = [1, "1", 3];
$filter = static fn($datum, $key): bool => $datum == 1 && $key >= 0;
var_dump(AtLeast::twice($data, $filter)) // true
$data = [1, "1", 3];
$filter = static fn($datum, $key): bool => $datum === 1 && $key >= 0;
var_dump(AtLeast::twice($data, $filter)) // false
3. AtLeast::times()
It verify that data has filtered found items at least times passed in 3rd arg.
use ArrayLookup\AtLeast;
$data = [false, null, 0];
$filter = static fn($datum): bool => ! $datum;
$times = 3;
var_dump(AtLeast::times($data, $filter, $times)) // true
$data = [1, null, 0];
$filter = static fn($datum): bool => ! $datum;
$times = 3;
var_dump(AtLeast::times($data, $filter, $times)) // false
// WITH key array included, pass $key variable as 2nd arg on filter to be used in filter
$data = [false, null, 0];
$filter = static fn($datum, $key): bool => ! $datum && $key >= 0;
$times = 3;
var_dump(AtLeast::times($data, $filter, $times)) // true
$data = [1, null, 0];
$filter = static fn($datum, $key): bool => ! $datum && $key >= 0;
$times = 3;
var_dump(AtLeast::times($data, $filter, $times)) // false
B. Only
1. Only::once()
It verify that data has filtered found item exactly found only once.
use ArrayLookup\Only;
$data = [1, 2, 3];
$filter = static fn($datum): bool => $datum === 1;
var_dump(Only::once($data, $filter)) // true
$data = [1, "1", 3]
$filter = static fn($datum): bool => $datum == 1;
var_dump(Only::once($data, $filter)) // false
// WITH key array included, pass $key variable as 2nd arg on filter to be used in filter
$data = [1, 2, 3];
$filter = static fn($datum, $key): bool => $datum === 1 && $key >= 0;
var_dump(Only::once($data, $filter)) // true
$data = [1, "1", 3]
$filter = static fn($datum, $key): bool => $datum == 1 && $key >= 0;
var_dump(Only::once($data, $filter)) // false
2. Only::twice()
It verify that data has filtered found items exactly found only twice.
use ArrayLookup\Only;
$data = [1, "1", 3];
$filter = static fn($datum): bool => $datum == 1;
var_dump(Only::twice($data, $filter)) // true
$data = [true, 1, new stdClass()];
$filter = static fn($datum): bool => (bool) $datum;
var_dump(Only::twice($data, $filter)) // false
// WITH key array included, pass $key variable as 2nd arg on filter to be used in filter
$data = [1, "1", 3];
$filter = static fn($datum, $key): bool => $datum == 1 && $key >= 0;
var_dump(Only::twice($data, $filter)) // true
$data = [true, 1, new stdClass()];
$filter = static fn($datum, $key): bool => (bool) $datum && $key >= 0;
var_dump(Only::twice($data, $filter)) // false
3. Only::times()
It verify that data has filtered found items exactly found only same with times passed in 3rd arg.
use ArrayLookup\Only;
$data = [false, null, 1];
$filter = static fn($datum): bool => ! $datum;
$times = 2;
var_dump(Only::times($data, $filter, $times)) // true
$data = [false, null, 0];
$filter = static fn($datum): bool => ! $datum;
$times = 2;
var_dump(Only::times($data, $filter, $times)) // false
// WITH key array included, pass $key variable as 2nd arg on filter to be used in filter
$data = [false, null, 1];
$filter = static fn($datum, $key): bool => ! $datum && $key >= 0;
$times = 2;
var_dump(Only::times($data, $filter, $times)) // true
$data = [false, null, 0];
$filter = static fn($datum, $key): bool => ! $datum && $key >= 0;
$times = 2;
var_dump(Only::times($data, $filter, $times)) // false
3. Finder
1. Finder::first()
It search first data filtered found.
use ArrayLookup\Finder;
$data = [1, 2, 3];
$filter = static fn($datum): bool => $datum === 1;
var_dump(Finder::first($data, $filter)) // 1
$filter = static fn($datum): bool => $datum == 1000;
var_dump(Finder::first($data, $filter)) // null
// RETURN the Array key, pass true to 3rd arg
$filter = static fn($datum): bool => $datum === 1;
var_dump(Finder::first($data, $filter, true)) // 0
$filter = static fn($datum): bool => $datum == 1000;
var_dump(Finder::first($data, $filter, true)) // null
// WITH key array included, pass $key variable as 2nd arg on filter to be used in filter
$filter = static fn($datum, $key): bool => $datum === 1 && $key >= 0;
var_dump(Finder::first($data, $filter)) // 1
$filter = static fn($datum, $key): bool => $datum == 1000 && $key >= 0;
var_dump(Finder::first($data, $filter)) // null
2. Finder::last()
It search last data filtered found.
use ArrayLookup\Finder;
$data = [6, 7, 8, 9];
var_dump(Finder::last(
$data,
static fn ($datum): bool => $datum > 5
)); // 9
var_dump(Finder::last(
$data,
static fn ($datum): bool => $datum < 5
)); // null
// RETURN the Array key, pass true to 3rd arg
// ... with PRESERVE original key
var_dump(Finder::last(
$data,
static fn ($datum): bool => $datum > 5,
true
)); // 3
// ... with RESORT key, first key is last record
var_dump(Finder::last(
$data,
static fn ($datum): bool => $datum > 5,
true,
false
)); // 0
var_dump(Finder::last(
$data,
static fn ($datum): bool => $datum < 5,
true
)); // null
// WITH key array included, pass $key variable as 2nd arg on filter to be used in filter
var_dump(Finder::last(
$data,
static fn ($datum, $key): bool => $datum > 5 && $key >= 0
)); // 9
var_dump(Finder::last(
$data,
static fn ($datum, $key): bool => $datum < 5 && $key >= 0
)); // null
3. Finder::rows()
It get rows data filtered found.
use ArrayLookup\Finder;
$data = [6, 7, 8, 9];
var_dump(Finder::rows(
$data,
static fn($datum): bool => $datum > 6
)); // [7, 8, 9]
var_dump(Finder::rows(
$data,
static fn ($datum): bool => $datum < 5
)); // []
// ... with PRESERVE original key
var_dump(Finder::rows(
$data,
static fn ($datum): bool => $datum > 6,
true
)); // [1 => 7, 2 => 8, 3 => 9]
var_dump(Finder::rows(
$data,
static fn ($datum): bool => $datum < 5,
true
)); // []
// WITH key array included, pass $key variable as 2nd arg on filter to be used in filter
var_dump(Finder::rows(
$data,
static fn($datum, $key): bool => $datum > 6 && $key > 1
)); // [8, 9]
// WITH gather only limited found data
$data = [1, 2];
$filter = static fn($datum): bool => $datum >= 0;
$limit = 1;
var_dump(
Finder::rows($data, $filter, limit: $limit)
); // [1]