jjware/collections

此包已被废弃,不再维护。未建议替代包。

PHP中操作集合的库

1.1.0 2016-10-06 17:00 UTC

This package is not auto-updated.

Last update: 2023-06-28 15:46:39 UTC


README

Build Status

PHP集合类型库

入门

composer require jjware/collections

使用

集合可以从现有的数组或没有任何参数的情况下实例化。使用集合的一个简单例子是

use Collections\Collection;

$collection = new Collection([1, 2, 3, 4, 5]);

$firstOverThree = $collection->where(function ($item) {
  return $item > 3;
})->firstOrDefault(null);

// $firstOverThree === 4

集合实现了IteratorAggregateArrayAccessCountableSerializableJsonSerializable接口。

还有一些专门用于队列等功能的集合类

use Collections\Queue;

$queue = new Queue([1, 2, 3, 4, 5]);

$next = $queue->dequeue();

// $next === 1

或者用于堆栈

use Collections\Stack;

$stack = new Stack([1, 2, 3, 4, 5]);

$next = $stack->pop();

// $next === 5

可以使用Collections\EnumerableExtensions特性在任意的Traversable上添加大量类似集合的功能。

EnumerableExtensions::all(callable $predicate): Enumerable
EnumerableExtensions::any(callable $predicate): Enumerable
EnumerableExtensions::contains(mixed $object): bool
EnumerableExtensions::count(): int
EnumerableExtensions::countWhere(callable $predicate): int
EnumerableExtensions::distinct(): Enumerable
EnumerableExtensions::distinctWhere(EqualityComparerInterface $comparer): Enumerable
EnumerableExtensions::each(callable $callback): void
EnumerableExtensions::elementAt(int $index): mixed
EnumerableExtensions::elementAtOrDefault(int $index, mixed $default): mixed
EnumerableExtensions::except(array $ignore): Enumerable
EnumerableExtensions::exceptWhere(array $ignore, EqualityComparerInterface $comparer): Enumerable
EnumerableExtensions::first(): mixed
EnumerableExtensions::firstOrDefault(mixed $default): mixed
EnumerableExtensions::last(): mixed
EnumerableExtensions::lastOrDefault(mixed $default): mixed
EnumerableExtensions::ofType(string $type): mixed
EnumerableExtensions::skip(int $number): Enumerable
EnumerableExtensions::toArray(): array
EnumerableExtensions::where(callable $predicate): Enumerable

未来将提供完整文档...