PHP code example of purrphp / pure-collection
1. Go to this page and download the library: Download purrphp/pure-collection library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
purrphp / pure-collection example snippets
$uuids = [];
$uuids[] = Uuid::fromInteger('1');
$uuids[] = '00000000-0000-0000-0000-000000000001'; // wrong type, no error
$uuids[] = Uuid::fromInteger('2');
$uuids['validUuid'] = Uuid::fromInteger('3'); // mixed int/string keys
use Purr\Collection\IntList;
$numbers = new IntList(1, 2, 3, 4, 5);
$even = $numbers->filter(fn(int $n): bool => $n % 2 === 0);
$doubled = $numbers->map(fn(int $n): int => $n * 2); // returns array
$sum = $numbers->reduce(fn(int $carry, int $n): int => $carry + $n, 0);
$sorted = $numbers->sorted(fn(int $a, int $b): int => $b <=> $a);
$numbers->count(); // 5
$numbers->isEmpty(); // false
$numbers->isNotEmpty(); // true
$numbers->max(); // 5
$numbers->min(); // 1
use Purr\Collection\IntSet;
use Purr\Collection\StringSet;
$set = new IntSet(1, 2, 3, 2, 1); // duplicates are removed
$set->toArray(); // [1, 2, 3]
$ids = IntSet::fromString('1,2,3', separator: ',');
$ids->join(','); // "1,2,3"
$tags = new StringSet('php', 'oop', 'php');
$tags->toArray(); // ['php', 'oop']
$tags->sortedAlphabetically()->toArray(); // ['oop', 'php']
$a = new StringSet('a', 'b', 'c');
$b = new StringSet('b', 'c', 'd');
$a->diff($b)->toArray(); // ['a']
use Purr\Collection\IntMap;
$map = new IntMap(...['a' => 1, 'b' => 2, 'c' => 3]);
$map->filter(fn(int $v): bool => $v > 1)->toArray(); // ['b' => 2, 'c' => 3]
$map->groupBy(fn(int $v): string => $v % 2 === 0 ? 'even' : 'odd');
use Purr\Collection\AbstractSet;
/** @template-extends AbstractSet<\DateTimeImmutable> */
class DateTimeSet extends AbstractSet
{
public function __construct(\DateTimeImmutable ...$dates)
{
parent::__construct($dates);
}
protected function isSupportedType(mixed $value): bool
{
return $value instanceof \DateTimeImmutable;
}
protected function getId(mixed $value): int|string
{
return $value->getTimeStamp();
}
}