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
andHashable
- has 8 classes namely,
Vector
,Deque
,Queue
,PriorityQueue
,Map
,Set
,Stack
, andPair
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