ExpressionEngine® User Guide

Legacy Documentation

You are using the documentation for version 4.3.8. Go here for the latest version.

Collections

Simple Example

The collection class is a list-style container for composite datatypes that adds more utility than storing them in a simple PHP array. It can store both arrays and objects:

use EllisLab\ExpressionEngine\Library\Data\Collection;

$collection = new Collection(array(
  array('name' => 'Anne', 'age' => 47),
  array('name' => 'Bob', 'age' => 32),
  array('name' => 'Julie', 'age' => 14),
  array('name' => 'Jack', 'age' => 86)
));

$collection->count(); // 4
$collection->first(); // Anne's array

$sorted = $collection->sortBy('age');
$sorted->first(); // Julie's array

For basic interactions a collection can be treated as a regular array:

foreach ($collection as $person)
{
  echo $person['age']; // or $person->age if your collection contains objects
}

$collection[] = array('name' => 'Savannah', 27);

Note

Indices are always uninterrupted numeric sequences starting at 0. Do not use string keys.

Method Reference

EllisLab\ExpressionEngine\Library\Data\Collection
asArray()

Turn the collection into an array

Returns:The collection items
Return type:Array
first()

Get the first element in the collection

Returns:The first element in the collection (or NULL if empty)
Return type:Mixed
last()

Get the last element in the collection

Returns:The last element in the collection (or NULL if empty)
Return type:Mixed
pluck($key)

Extract a value from all elements of the collection

Parameters:
  • $key (string) – The key or property name to pluck
Returns:

Array of values for the key

Return type:

Array

collect($collector)

Extract a value from all elements of the collection using a keyname or callback.

Parameters:
  • $extractor (string|Closure) – The name of the property or a closure that returns a value for an item.
Returns:

Array of values for the key

Return type:

Array

sortBy($column, $flags = SORT_REGULAR)

Sort a collection by a certain element key. Returns a new collection.

Parameters:
  • $key (string) – The key or property to sort by
  • $flags (int) – A PHP sort flag
Returns:

A new collection

Return type:

Collection

reverse()

Reverse the elements in the collection. Returns a new collection.

Returns:A new collection with the elements in reverse
Return type:Collection
indexBy($extractor)

Return an associative array of all items indexed by a given element.

It is up to you to ensure that the index keys are unique. If $extractor is a closure it will be passed each element in the collection and should return the value to use.

Parameters:
  • $extractor (string|Closure) – The name of the property or a closure that returns a value for an item.
Returns:

Associative array of elements

Return type:

Array

getDictionary($key, $value)

Return a key-value array composed of two items in each collection element.

It is up to you to ensure that the index keys are unique.

Parameters:
  • $extractor (string|Closure) – The name of the property or a closure that returns a value for an item.
Returns:

Associative key-value array

Return type:

Array

map($callback)

Applies the given callback to the collection and returns an array of the results.

Parameters:
  • $key (string) – The name of the property
Returns:

The value of the property

Return type:

Array

filter($callback)

Filter elements of a collection using a callback function. If the callback returns TRUE the current value from the collection is returned in the result Collection.

Parameters:
  • $callback (Closure) – The callback function to use
Returns:

New collection of filtered elements.

Return type:

Collection

each($callback)

Iterates over all the elements in the Collection and passes them to them to the Callback one at a time.

Parameters:
  • $callback (Closure) – The callback to pass each element to
Returns:

The original collection

Return type:

Collection

count()

Count the elements in the Collection

Returns:The number of items in the Collection
Return type:int