Does PHP have built-in data structures?

PHP 7 introduced an extension called ds providing specialized data structures as an alternative to the array.

The ds,

  • uses the Ds\ namespace.
  • has 3 interfaces namely,Collection, Sequence and Hashable
  • has 8 classes namely, Vector, Deque,Queue, PriorityQueue, Map, Set, Stack, and Pair

For more information checkout the Manual and also This blog post has some awesome information including benchmarks.


The only native data structure in PHP is array. Fortunately, arrays are quite flexible and can be used as hash tables as well.

http://www.php.net/array

However, there is SPL which is sort of a clone of C++ STL.

http://www.php.net/manual/en/book.spl.php


PHP offers data structures through the Standard PHP Library (SPL) basic extension, which is available and compiled by default in PHP 5.0.0.

The data structures offered are available with PHP 5 >= 5.3.0, and includes:

Doubly Linked Lists

A Doubly Linked List (DLL) is a list of nodes linked in both directions to each others. Iterator’s operations, access to both ends, addition or removal of nodes have a cost of O(1) when the underlying structure is a DLL. It hence provides a decent implementation for stacks and queues.

  • SplDoublyLinkedList class
    • SplStack class
    • SplQueue class

Heaps

Heaps are tree-like structures that follow the heap-property: each node is greater than or equal to its children, when compared using the implemented compare method which is global to the heap.

  • SplHeap class
    • SplMaxHeap class
    • SplMinHeap class
  • SplPriorityQueue class

Arrays

Arrays are structures that store the data in a continuous way, accessible via indexes. Don’t confuse them with PHP arrays: PHP arrays are in fact implemented as ordered hashtables.

  • SplFixedArray class

Map

A map is a datastructure holding key-value pairs. PHP arrays can be seen as maps from integers/strings to values. SPL provides a map from objects to data. This map can also be used as an object set.

  • SplObjectStorage class

Source: http://php.net/manual/en/spl.datastructures.php