WireArray class

WireArray is the base iterable array type used throughout the ProcessWire framework.

Nearly all collections of items in ProcessWire are derived from the WireArray type. This includes collections of pages, fields, templates, modules and more. As a result, the WireArray class is one you will be interacting with regularly in the ProcessWire API, whether you know it or not.

Below are all the public methods you can use to interact with WireArray types in ProcessWire. In addition to these methods, you can also treat WireArray types like regular PHP arrays, in that you can foreach() them and get or set elements using array syntax, i.e. $value = $items[$key]; to get an item or $items[] = $item; to add an item.


Click any linked item for full usage details and examples. Hookable methods are indicated with the icon. In addition to those shown below, the WireArray class also inherits all the methods and properties of: Wire.

Show class?             Show args?        

Traversal

NameReturnSummary 
WireArray::and($item)
WireArrayReturn a new copy of this WireArray with the given item(s) appended
WireArray::each()
array null string WireArrayPerform an action upon each item in the WireArray
WireArray::first()
Wire mixed boolReturns the first item in the WireArray or boolean false if empty.
Can also be used as property: WireArray::first
 
WireArray::getIterator()
ArrayObject WireAllows iteration of the WireArray. 
WireArray::last()
Wire mixed boolReturns the last item in the WireArray or boolean false if empty.
Can also be used as property: WireArray::last
 
WireArray::slices(int $qty)
arrayDivide this WireArray into $qty slices and return array of them (each being another WireArray) 

Retrieval

NameReturnSummary 
WireArray::count()
intReturns the number of items in this WireArray.
Can also be used as property: WireArray::count
 
WireArray::eq(int $num)
Wire nullReturns the item at the given index starting from 0, or NULL if it doesn't exist. 
WireArray::explode()
arrayReturn a plain array of the requested property from each item 
WireArray::find($selector)
WireArrayFind all items in this WireArray that match the given selector. 
WireArray::findOne($selector)
Wire boolFind a single item by selector 
WireArray::findRandom(int $num)
WireArrayFind a specified quantity of random elements from this WireArray. 
WireArray::findRandomTimed(int $num)
WireArrayFind a quantity of random elements from this WireArray based on a timed interval (or user provided seed). 
WireArray::first()
Wire mixed boolReturns the first item in the WireArray or boolean false if empty.
Can also be used as property: WireArray::first
 
WireArray::get($key)
WireData Page mixed array nullReturns the value of the item at the given index, or null if not set. 
WireArray::getAll()
$thisReturns all items in the WireArray (for syntax convenience) 
WireArray::getArray()
arrayGet a PHP array of all the items in this WireArray with original keys maintained 
WireArray::getKeys()
arrayReturns a regular PHP array of all keys used in this WireArray. 
WireArray::getNext(Wire $item)
Wire nullGiven an item, get the item that comes after it in the WireArray 
WireArray::getPrev(Wire $item)
Wire nullGiven an item, get the item before it in the WireArray 
WireArray::getProperty(string $property)
Wire mixedGet a predefined property of the array, or extra data that has been set. 
WireArray::getRandom()
WireArray Wire mixed nullGet a random item from this WireArray. 
WireArray::getValues()
array WireReturns a regular PHP array of all values used in this WireArray. 
WireArray::has($key)
boolDoes this WireArray have the given item, index, or match the given selector? 
WireArray::implode(string $delimiter)
stringCombine all elements into a delimiter-separated string containing the given property from each item 
WireArray::index(int $num)
WireArrayReturns a new WireArray of the item at the given index. 
WireArray::last()
Wire mixed boolReturns the last item in the WireArray or boolean false if empty.
Can also be used as property: WireArray::last
 
WireArray::pop()
Wire mixed nullPop an element off the end of the WireArray and return it 
WireArray::reverse()
WireArrayReturn a new reversed version of this WireArray. 
WireArray::shift()
Wire mixed nullShift an element off the beginning of the WireArray and return it 
WireArray::slice(int $start)
WireArrayGet a slice of the WireArray. 
WireArray::slices(int $qty)
arrayDivide this WireArray into $qty slices and return array of them (each being another WireArray) 
WireArray::unique()
WireArrayReturn a new array that is unique (no two of the same elements) 

Manipulation

NameReturnSummary 
WireArray::add($item)
$thisAdd an item to the end of the WireArray. 
WireArray::append($item)
$thisAppend an item to the end of the WireArray 
WireArray::filter($selector)
$thisFilter this WireArray to only include items that match the given selector (destructive) 
WireArray::import($items)
$thisImport the given item(s) into this WireArray. 
WireArray::insertAfter($item, $existingItem)
$thisInsert an item after an existing item 
WireArray::insertBefore($item, $existingItem)
$thisInsert an item before an existing item 
WireArray::not($selector)
$thisFilter this WireArray to only include items that DO NOT match the selector (destructive) 
WireArray::pop()
Wire mixed nullPop an element off the end of the WireArray and return it 
WireArray::prepend($item)
$thisPrepend an item to the beginning of the WireArray. 
WireArray::push($item)
$thisPush an item to the end of the WireArray. 
WireArray::remove($key)
$thisRemoves the given item or index from the WireArray (if it exists). 
WireArray::removeAll()
$thisRemoves all items from the WireArray, leaving it blank 
WireArray::removeItems($items)
$thisRemoves multiple identified items at once 
WireArray::replace($itemA, $itemB)
$thisReplace one item with the other 
WireArray::set($key, $value)
$thisSet an item by key in the WireArray. 
WireArray::setArray($data)
$thisLike set() but accepts an array or WireArray to set multiple values at once 
WireArray::shift()
Wire mixed nullShift an element off the beginning of the WireArray and return it 
WireArray::shuffle()
$thisShuffle/randomize this WireArray 
WireArray::sort($properties)
$thisSort this WireArray by the given properties. 
WireArray::unshift($item)
$thisUnshift an element to the beginning of the WireArray (alias for prepend) 

Info

NameReturnSummary 
WireArray::has($key)
boolDoes this WireArray have the given item, index, or match the given selector? 
WireArray::isIdentical(WireArray $items)
boolIs the given WireArray identical to this one? 
WireArray::isValidItem(mixed $item)
boolIs the given item valid for storange in this array? 
WireArray::isValidKey($key)
boolIs the given item key valid for use in this array? 
WireArray::iterable(mixed $item)
boolDetermines if the given item iterable as an array. 

Output rendering

NameReturnSummary 
WireArray::each()
array null string WireArrayPerform an action upon each item in the WireArray
WireArray::implode(string $delimiter)
stringCombine all elements into a delimiter-separated string containing the given property from each item 

Other data storage

NameReturnSummary 
WireArray::data()
WireArray mixed array nullStore or retrieve an extra data value in this WireArray 
WireArray::removeData(string $key)
$thisRemove a property/value previously set with the WireArray::data() method. 

Changes

NameReturnSummary 
WireArray::getItemsAdded()
array WireReturn array of all items added to this WireArray (while change tracking is enabled) 
WireArray::getItemsRemoved()
array WireReturn array of all items removed from this WireArray (when change tracking is enabled) 

Fun tools

NameReturnSummary 
WireArray::and($item)
WireArrayReturn a new copy of this WireArray with the given item(s) appended
WireArray::callUnknown(string $method, array $arguments)
null mixedHandler for when an unknown/unhooked method call is executed
WireArray::each()
array null string WireArrayPerform an action upon each item in the WireArray
WireArray::explode()
arrayReturn a plain array of the requested property from each item 
WireArray::implode(string $delimiter)
stringCombine all elements into a delimiter-separated string containing the given property from each item 

For hooks

These methods are only useful for hooking and should not be called directly.

Common

NameReturnSummary 
WireArray::WireArray new()
static)
WireArray::keys array All keys used in this WireArray 
WireArray::setDuplicateChecking(bool $value)
(nothing)Set the current duplicate checking state 
WireArray::values array All values used in this WireArray 

Additional methods and properties

In addition to the methods and properties above, WireArray also inherits the methods and properties of these classes:

API reference based on ProcessWire core version 3.0.123

Twitter updates

  • New post: In this week’s post, we’ll take a look a look at the new website and focus on some parts of it and how they were built. Then we’ll dive into the latest version of ProcessWire on the dev branch, version 3.0.124— More
    11 January 2019
  • New ProcessWire main site rebuild ready for preview— More
    4 January 2019
  • Happy Holidays! This latest master version of ProcessWire contains hundreds of new additions, fixes, optimizations and more. This post covers all the highlights— More
    21 December 2018

Latest news

  • ProcessWire Weekly #244
    In the 244th issue of ProcessWire Weekly we'll cover the latest core updates, introduce the new processwire.com site, ask a PHP version related question in the weekly poll, and showcase the site of an open source room bookings app. Read on!
    Weekly.pw / 12 January 2019
  • ProcessWire 3.0.124 and new website launched
    In this week’s post, we’ll take a look a look at the new website and focus on some parts of it and how they were built. Then we’ll dive into the latest version of ProcessWire on the dev branch, version 3.0.124.
    Blog / 11 January 2019
  • Subscribe to weekly ProcessWire news

“We chose ProcessWire because of its excellent architecture, modular extensibility and the internal API. The CMS offers the necessary flexibility and performance for such a complex website like superbude.de. ProcessWire offers options that are only available for larger systems, such as Drupal, and allows a much slimmer development process.” —xport communication GmbH