Collection
Instalação
composer require astronphp/collection
Guia do Usuário
- __construct
- unshift
- push
- set
- get
- isset
- empty
- unset
- length
- shift
- pop
- first
- last
- each
- for
- walk
- sum
- contains
- map
- filter
- reduce
- join
- random
- shuffle
- flip
- keys
- values
- column
- chunk
- unique
- coalesce
- merge
- reverse
- search
- lower
- upper
- toArray
- toJson
- sort
- rsort
- asort
- arsort
- ksort
- krsort
- union
- diff
- outer
- intersect
- cartesian
- isCollection
- combine
- range
construct
public function __construct($content = [])Recebe opcionalmente um array ou um objeto, que será convertido internamente.
use Astronphp\Collection\Collection;
$collection1 = new Collection();
$collection2 = new Collection(['lorem' => 'ipsum']);
$collection3 = new Collection(new \DateTime('now'));
var_dump($collection1, $collection2, $collection3);
/*
object(Astronphp\Collection\Collection)[3]
protected 'content' => array (size = 0)
protected 'length' => int 0
object(Astronphp\Collection\Collection)[2]
protected 'content' => array (size=1)
'lorem' => string 'ipsum' (length=5)
protected 'length' => int 1
object(Astronphp\Collection\Collection)[4]
protected 'content' => array (size=3)
'date' => string '2019-09-17 14:42:47.000000' (length=26)
'timezone_type' => int 3
'timezone' => string 'UTC' (length=3)
protected 'length' => int 3
*/unshift
public function unshift(...$values): selfAdiciona valores no início da coleção.
use Astronphp\Collection\Collection;
$collection = new Collection();
$collection->unshift('lorem');
$collection->unshift('ipsum', 'dolor');
var_dump($collection);
/*
object(Astronphp\Collection\Collection)[3]
protected 'content' =>
array (size=3)
0 => string 'ipsum' (length=5)
1 => string 'dolor' (length=5)
2 => string 'lorem' (length=5)
protected 'length' => int 3
*/push
public function push(...$values): selfAdiciona valores ao final da coleção.
use Astronphp\Collection\Collection;
$collection = new Collection();
$collection->push('lorem');
$collection->push('ipsum', 'dolor');
var_dump($collection);
/*
object(Astronphp\Collection\Collection)[3]
protected 'content' =>
array (size=3)
0 => string 'lorem' (length=5)
1 => string 'ipsum' (length=5)
2 => string 'dolor' (length=5)
protected 'length' => int 3
*/set
public function set(string $key, $value): selfAssocia uma chave à um valor.
use Astronphp\Collection\Collection;
$collection = new Collection();
$collection->set('lorem', 'ipsum');
$collection->set('dolor.amet', 'consectetur');
var_dump($collection);
/*
object(Astronphp\Collection\Collection)[3]
protected 'content' =>
array (size=2)
'lorem' => string 'ipsum' (length=5)
'dolor' =>
array (size=1)
'amet' => string 'consectetur' (length=11)
protected 'length' => int 2
*/get
public function get(string $key)Recupera valores da coleção
use Astronphp\Collection\Collection;
$collection = new Collection();
$collection->set('lorem', 'ipsum');
$collection->set('dolor.amet', 'consectetur');
$collection->get('lorem'); // ipsum
$collection->get('dolor.amet'); // consecteturisset
public function isset(string $key): boolVerifica chaves não inicializadas ou com valor nulo
use Astronphp\Collection\Collection;
$collection = new Collection();
$collection->set('lorem', 'ipsum');
$collection->isset('lorem'); // true
$collection->isset('dolor'); // falseempty
public function empty(string $key): boolVerifica chaves vazias
use Astronphp\Collection\Collection;
$collection = new Collection();
$collection->set('lorem', 1);
$collection->set('ipsum', 0);
$collection->empty('lorem'); // false
$collection->empty('ipsum'); // trueunset
public function unset(string $key)Remove chaves
use Astronphp\Collection\Collection;
$collection = new Collection();
$collection->set('lorem', 'ipsum');
var_dump($collection);
/*
object(Astronphp\Collection\Collection)[3]
protected 'content' =>
array (size=1)
'lorem' => string 'ipsum' (length=5)
protected 'length' => int 1
*/
$collection->unset('lorem');
var_dump($collection);
/*
object(Astronphp\Collection\Collection)[3]
protected 'content' =>
array (size=0)
empty
protected 'length' => int 0
*/length
public function length(): intRecupera o tamanho da coleção
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
$collection->length(); // 5shift
public function shift()Remove o primeiro elemento da coleção retornando o elemento removido
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
$collection->shift(); // 1pop
public function pop()Remove o ultimo elemento da coleção retornando o elemento removido
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
$collection->pop(); // 5first
public function first()Recupera o primeiro item da coleção
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
$collection->first(); // 1last
Recupera o último item da coleção
public function last()use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
$collection->last(); // 5each
public function each(callable $callback)Percorre toda a coleção
use Astronphp\Collection\Collection;
$collection = new Collection(['lorem' => 'ipsum', 'dolor' => 'amet']);
$collection->each(function($key, $value) {
var_dump($key, $value);
});
/*
string 'lorem' (length=5)
string 'ipsum' (length=5)
string 'dolor' (length=5)
string 'amet' (length=4)
*/for
public function for(int $start, int $step, callable $callback)Percorre a coleção em passos
use Astronphp\Collection\Collection;
$collection = new Collection([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
$collection->for(0, 2, function($key, $value) {
var_dump($value);
});
/* int 0, int 2, int 4, int 6, int 8, int 10 */walk
Percorre a coleção recursivamente
public function walk(callable $callback, $type = \RecursiveIteratorIterator::LEAVES_ONLY)use Astronphp\Collection\Collection;
$collection = new Collection(['lorem', ['ipsum', 'dolor'], ['sit' => ['amet' => 'consectetur']]]);
$collection->walk(function($key, $value) {
var_dump($key, $value);
});
/*
int 0
string 'lorem' (length=5)
int 0
string 'ipsum' (length=5)
int 1
string 'dolor' (length=5)
string 'amet' (length=4)
string 'consectetur' (length=11)
*/sum
public function sum()Soma todos os elementos da coleção
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
$collection->sum(); // 15contains
public function contains($value): boolVerifica se um dado valor existe na coleção
use Astronphp\Collection\Collection;
$collection = new Collection(['lorem', 'ipsum', 'dolor']);
$collecion->contains('dolor'); // truemap
public function map(callable $callback): selfAplica um callback em todos os elementos da coleção
use Astronphp\Collection\Collection;
$collection = new Collection(['lorem', 'ipsum', 'dolor']);
var_dump($collection->map(function($key, $value) {
return [$key => strtoupper($value)];
}));
/*
object(Astronphp\Collection\Collection)[4]
protected 'content' =>
array (size=3)
0 => string 'LOREM' (length=5)
1 => string 'IPSUM' (length=5)
2 => string 'DOLOR' (length=5)
protected 'length' => int 3
*/filter
public function filter(callable $callback): selfFiltra a coleção utilizando um callback
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5, 6, 7, 8, 9]);
var_dump($collection->filter(function($key, $value) {
return $value > 5;
}));
/*
object(Astronphp\Collection\Collection)[4]
protected 'content' =>
array (size=4)
5 => int 6
6 => int 7
7 => int 8
8 => int 9
protected 'length' => int 4
*/reduce
public function reduce(callable $callback): selfReduz a coleção a um único valor
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
$result = $collection->reduce(function($a, $b) {
return $a + $b;
});
var_dump($result); // int 15join
public function join(string $glue)Junta os elementos em uma string
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
var_dump($collection->join('-')); // string '1-2-3-4-5'random
public function random(int $num = 1)Recupera elementos aleatórios da coleção
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
$collection->random(); // 3shuffle
public function shuffle(): selfEmbaralha os elementos da coleção
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
var_dump($collection->shuffle());
/*
object(Astronphp\Collection\Collection)[2]
protected 'content' =>
array (size=5)
0 => int 3
1 => int 1
2 => int 5
3 => int 2
4 => int 4
protected 'length' => int 5
*/flip
public function flip(): selfInverte a relação entre chaves e valores da coleção
use Astronphp\Collection\Collection;
$collection = new Collection(['lorem', 'ipsum', 'dolor']);
var_dump($collection->flip());
/*
object(Astronphp\Collection\Collection)[2]
protected 'content' =>
array (size=3)
'lorem' => int 0
'ipsum' => int 1
'dolor' => int 2
protected 'length' => int 3
*/keys
public function keys(): selfRetorna uma coleção apenas com as chaves da coleção anterior
use Astronphp\Collection\Collection;
$collection = new Collection(['lorem' => 'ipsum', 'dolor' => 'amet']);
var_dump($collection->keys());
/*
object(Astronphp\Collection\Collection)[2]
protected 'content' =>
array (size=2)
0 => string 'lorem' (length=5)
1 => string 'dolor' (length=5)
protected 'length' => int 2
*/values
public function values(): selfRetorna uma coleção apenas com os valores da coleção anterior
use Astronphp\Collection\Collection;
$collection = new Collection(['lorem' => 'ipsum', 'dolor', 'amet']);
var_dump($collection->values());
/*
object(Astronphp\Collection\Collection)[2]
protected 'content' =>
array (size=2)
0 => string 'ipsum' (length=5)
1 => string 'amet' (length=4)
protected 'length' => int 2
*/column
public function column($key, $index = null)Recupera dados de uma coluna da coleção
use Astronphp\Collection\Collection;
$collection = new Collection([
[
'lorem' => 'ipsum',
'dolor' => 'amet',
],
[
'lorem' => 'dolor',
'dolor' => 'consectetur',
],
]);
var_dump($collection->column('lorem'));
/*
object(Astronphp\Collection\Collection)[2]
protected 'content' =>
array (size=2)
0 => string 'ipsum' (length=5)
1 => string 'dolor' (length=5)
protected 'length' => int 2
*/chunk
public function chunk(int $size, bool $preserve_keys = false): selfDivide a coleção em partes iguais
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5, 6, 7, 8, 9]);
var_dump($collection->chunk(3));
/*
object(Astronphp\Collection\Collection)[2]
protected 'content' =>
array (size=3)
0 =>
array (size=3)
0 => int 1
1 => int 2
2 => int 3
1 =>
array (size=3)
0 => int 4
1 => int 5
2 => int 6
2 =>
array (size=3)
0 => int 7
1 => int 8
2 => int 9
protected 'length' => int 3
*/unique
public function unique(int $flags = SORT_STRING): selfRemove duplicatas
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 1, 2, 3, 4, 5, 2, 3, 4]);
var_dump($collection->unique());
/*
object(Astronphp\Collection\Collection)[2]
protected 'content' =>
array (size=5)
0 => int 1
1 => int 2
2 => int 3
6 => int 4
7 => int 5
protected 'length' => int 5
*/coalesce
public function coalesce()Retorna o primeiro valor não nulo encontrado
use Astronphp\Collection\Collection;
$collection = new Collection([null, null, null, 'lorem', null, null]);
var_dump($collection->coalesce()); // string 'lorem'merge
public function merge();Mescla todas as dimensões da coleção
use Astronphp\Collection\Collection;
$collection = new Collection([
['lorem' => 'ipsum'],
['dolor' => 'sit'],
['amet' => 'consectetur'],
]);
var_dump($collection->merge());
/*
object(Astronphp\Collection\Collection)[4]
protected 'content' =>
array (size=3)
'lorem' => string 'ipsum' (length=5)
'dolor' => string 'sit' (length=3)
'amet' => string 'consectetur' (length=11)
protected 'length' => int 3
*/reverse
public function reverse($preserve_keys = null): selfInverte a coleção
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
var_dump($collection->reverse());
/*
object(Astronphp\Collection\Collection)[2]
protected 'content' =>
array (size=5)
0 => int 5
1 => int 4
2 => int 3
3 => int 2
4 => int 1
protected 'length' => int 5
*/search
public function search($value, bool $strict = null)Retorna a chave do valor solicitado
use Astronphp\Collection\Collection;
$collection = new Collection(['lorem' => 'ipsum', 'dolor' => 'amet']);
var_dump($collection->search('ipsum')); // 'lorem'lower
public function lower(): selfTransforma recursivamente o case de todas as chaves da coleção para minúsculo
use Astronphp\Collection\Collection;
$collection = new Collection(['Lorem' => 'Ipsum', 'Dolor' => 'Amet']);
var_dump($collection->upper());
/*
object(Astronphp\Collection\Collection)[3]
protected 'content' =>
array (size=2)
'LOREM' => string 'Ipsum' (length=5)
'DOLOR' => string 'Amet' (length=4)
protected 'length' => int 2
*/upper
public function upper(): selfTransforma recursivamente o case de todas as chaves da coleção para maiúsculo
use Astronphp\Collection\Collection;
$collection = new Collection(['Lorem' => 'Ipsum', 'Dolor' => 'Amet']);
var_dump($collection->lower());
/*
object(Astronphp\Collection\Collection)[3]
protected 'content' =>
array (size=2)
'lorem' => string 'Ipsum' (length=5)
'dolor' => string 'Amet' (length=4)
protected 'length' => int 2
*/toArray
public function toArray()Recupera o array interno da coleção
use Astronphp\Collection\Collection;
$collection = new Collection([1, 2, 3, 4, 5]);
var_dump($collection->toArray());
/*
array (size=5)
0 => int 1
1 => int 2
2 => int 3
3 => int 4
4 => int 5
*/toJson
public function toJson()Retorna o conteúdo da coleção em uma string JSON
use Astronphp\Collection\Collection;
$collection = new Collection(['lorem' => 'ipsum', 'dolor' => 'amet']);
var_dump($collection->toJson()); // string '{"lorem":"ipsum","dolor":"amet"}'sort
public function sort()Ordena os valores da coleção
use Astronphp\Collection\Collection;
$collection = new Collection([3, 4, 8, 7, 1, 5]);
$collection->sort(); //[1,3,4,5,7,8]rsort
public function rsort()Ordena os valores da coleção em ordem inversa
use Astronphp\Collection\Collection;
$collection = new Collection([3, 4, 8, 7, 1, 5]);
$collection->rsort(); //[8,7,5,4,3,1]asort
public function asort()Ordena os valores da coleção mantendo a associação
use Astronphp\Collection\Collection;
$collection = new Collection([
'lorem' => 'ipsum',
'dolor' => 'amet',
'sit' => 'consectetur'
]);
$collection->asort(); //["dolor" => "amet","sit" => "consectetur","lorem" => "ipsum"]arsort
public function arsort()Ordena os valores da coleção em ordem inversa mantendo a associação
use Astronphp\Collection\Collection;
$collection = new Collection([
'lorem' => 'ipsum',
'dolor' => 'amet',
'sit' => 'consectetur'
]);
$collection->arsort(); // ["lorem" => "ipsum","sit" => "consectetur","dolor" => "amet"]ksort
public function ksort()Ordena os valores da coleção pelas chaves
use Astronphp\Collection\Collection;
$collection = new Collection([
'lorem' => 'ipsum',
'dolor' => 'amet',
'sit' => 'consectetur'
]);
$collection->ksort(); //["dolor" => "amet","lorem" => "ipsum","sit" => "consectetur"]krsort
public function krsort()Ordena os valores da coleção pelas chaves em ordem inversa
use Astronphp\Collection\Collection;
$collection = new Collection([
'lorem' => 'ipsum',
'dolor' => 'amet',
'sit' => 'consectetur'
]);
$collection->krsort(); //["sit" => "consectetur","lorem" => "ipsum","dolor" => "amet"]union
public function union()Realiza a união entre todos os conjuntos da coleção
use Astronphp\Collection\Collection;
$collection = new Collection([
[1, 2, 3],
[3, 4, 5],
]);
$collection->union(); // [1, 2, 3, 4, 5]diff
public function diff()Realiza a diferença entre todos os conjuntos da coleção
use Astronphp\Collection\Collection;
$collection = new Collection([
[1, 2, 3],
[3, 4, 5],
]);
$collection->diff(); // [1, 2]
$collection = new Collection([
[3, 4, 5],
[1, 2, 3],
]);
outer
public function outer()Realiza a diferença total entre conjuntos
use Astronphp\Collection\Collection;
$collection = new Collection([
[1, 2, 3],
[3, 4, 5],
]);
$collection->outer(); // [[1, 2], [4, 5]]intersect
public function intersect()Realiza a intersecção entre todos os conjuntos da coleção
use Astronphp\Collection\Collection;
$collection = new Collection([
[1, 2, 3, 4],
[3, 4, 5, 6],
]);
$collection->intersect(); // [3, 4]cartesian
public function cartesian()Realiza o produto cartesiano entre todos os conjuntos da coleção
use Astronphp\Collection\Collection;
$collection = new Collection([
[1, 2, 3],
[3, 4, 5],
]);
$collection->cartesian(); // [[1,3], [1,4], [1,5], [2,3], [2,4], [2,5], [3,3], [3,4], [3,5]]isCollection
public static function isCollection(): booluse Astronphp\Collection\Collection;
Collection::isCollection(new Collection()); // true
Collection::isCollection(10); // falsecombine
public function combine(): selfuse Astronphp\Collection\Collection;
$array = ['lorem', 'ipsum', 'dolor'];
$collection = new Collection([1, 2, 3]);
var_dump(Collection::combine($array, $collection));
/*
object(Astronphp\Collection\Collection)[2]
protected 'content' =>
array (size=3)
'lorem' => int 1
'ipsum' => int 2
'dolor' => int 3
protected 'length' => int 3
*/range
public static function range($start, $end, $step = 1): selfuse Astronphp\Collection\Collection;
Collection::range($start = 10, $end = 20, $step = 2); // [10, 12, 14, 16, 18, 20]
Collection::range($start = 'A', $end = 'F'); // ["A", "B", "C", "D", "E", "F"]