SPL提供了一组标准数据结构。
-
SplDoublyLinkedList Class:双向链表(DLL)是在两个方向上相互链接的节点列表。当底层结构是dll时,迭代器的操作、对两端的访问、节点的添加或删除均是O(1),为堆栈和队列提供了良好的实现
SplDoublyLinkedList::add — Add/insert a new value at the specified index SplDoublyLinkedList::bottom — Peeks at the node from the beginning of the doubly linked list SplDoublyLinkedList::__construct — Constructs a new doubly linked list SplDoublyLinkedList::count — Counts the number of elements in the doubly linked list. SplDoublyLinkedList::current — Return current array entry SplDoublyLinkedList::getIteratorMode — Returns the mode of iteration SplDoublyLinkedList::isEmpty — Checks whether the doubly linked list is empty. SplDoublyLinkedList::key — Return current node index SplDoublyLinkedList::next — Move to next entry SplDoublyLinkedList::offsetExists — Returns whether the requested $index exists SplDoublyLinkedList::offsetGet — Returns the value at the specified $index SplDoublyLinkedList::offsetSet — Sets the value at the specified $index to $newval SplDoublyLinkedList::offsetUnset — Unsets the value at the specified $index SplDoublyLinkedList::pop — Pops a node from the end of the doubly linked list SplDoublyLinkedList::prev — Move to previous entry SplDoublyLinkedList::push — Pushes an element at the end of the doubly linked list SplDoublyLinkedList::rewind — Rewind iterator back to the start SplDoublyLinkedList::serialize — Serializes the storage SplDoublyLinkedList::setIteratorMode — Sets the mode of iteration SplDoublyLinkedList::shift — Shifts a node from the beginning of the doubly linked list SplDoublyLinkedList::top — Peeks at the node from the end of the doubly linked list SplDoublyLinkedList::unserialize — Unserializes the storage SplDoublyLinkedList::unshift — Prepends the doubly linked list with an element SplDoublyLinkedList::valid — Check whether the doubly linked list contains more nodes
-
SplStack Class:该类继承自SplDoublyLinkedList,通过使用一个双向链表来提供栈的主要功能
SplStack::__construct — Constructs a new stack implemented using a doubly linked list SplStack::setIteratorMode — Sets the mode of iteration
-
SplQueue Class:该类继承自SplDoublyLinkedList,通过使用一个双向链表来提供队列的主要功能
SplQueue::__construct — Constructs a new queue implemented using a doubly linked list SplQueue::dequeue — Dequeues a node from the queue SplQueue::enqueue — Adds an element to the queue. SplQueue::setIteratorMode — Sets the mode of iteration
-
SplHeap:该abstract类提供了堆的主要功能。堆是满足堆属性的树型结构:每个节点都大于或等于其子节点
SplHeap::compare — Compare elements in order to place them correctly in the heap while sifting up. SplHeap::__construct — Constructs a new empty heap SplHeap::count — Counts the number of elements in the heap. SplHeap::current — Return current node pointed by the iterator SplHeap::extract — Extracts a node from top of the heap and sift up. SplHeap::insert — Inserts an element in the heap by sifting it up. SplHeap::isEmpty — Checks whether the heap is empty. SplHeap::key — Return current node index SplHeap::next — Move to the next node SplHeap::recoverFromCorruption — Recover from the corrupted state and allow further actions on the heap. SplHeap::rewind — Rewind iterator back to the start (no-op) SplHeap::top — Peeks at the node from the top of the heap SplHeap::valid — Check whether the heap contains more nodes
-
SplMaxHeap Class:该类继承自SplHeap,提供了大顶堆的主要功能
SplMaxHeap::compare — Compare elements in order to place them correctly in the heap while sifting up.
-
SplMinHeap class:该类继承自SplHeap,提供了小顶堆的主要功能
SplMinHeap::compare — Compare elements in order to place them correctly in the heap while sifting up.
-
SplPriorityQueue Class:该类提供优先队列的功能,以大顶堆来实现的
SplPriorityQueue::compare — Compare priorities in order to place elements correctly in the heap while sifting up. SplPriorityQueue::__construct — Constructs a new empty queue SplPriorityQueue::count — Counts the number of elements in the queue. SplPriorityQueue::current — Return current node pointed by the iterator SplPriorityQueue::extract — Extracts a node from top of the heap and shift up. SplPriorityQueue::insert — Inserts an element in the queue by sifting it up. SplPriorityQueue::isEmpty — Checks whether the queue is empty. SplPriorityQueue::key — Return current node index SplPriorityQueue::next — Move to the next node SplPriorityQueue::recoverFromCorruption — Recover from the corrupted state and allow further actions on the queue. SplPriorityQueue::rewind — Rewind iterator back to the start (no-op) SplPriorityQueue::setExtractFlags — Sets the mode of extraction SplPriorityQueue::top — Peeks at the node from the top of the queue SplPriorityQueue::valid — Check whether the queue contains more nodes
-
SplFixedArray Class:这里的array是以连续方式存储数据的结构,可以通过索引访问,与PHP数组是有序哈希表实现不同;另外,SplFixedArray 拥有固定长度、整数indexes,速度更快
SplFixedArray::__construct — Constructs a new fixed array SplFixedArray::count — Returns the size of the array SplFixedArray::current — Return current array entry SplFixedArray::fromArray — Import a PHP array in a SplFixedArray instance SplFixedArray::getSize — Gets the size of the array SplFixedArray::key — Return current array index SplFixedArray::next — Move to next entry SplFixedArray::offsetExists — Returns whether the requested index exists SplFixedArray::offsetGet — Returns the value at the specified index SplFixedArray::offsetSet — Sets a new value at a specified index SplFixedArray::offsetUnset — Unsets the value at the specified $index SplFixedArray::rewind — Rewind iterator back to the start SplFixedArray::setSize — Change the size of an array SplFixedArray::toArray — Returns a PHP array from the fixed array SplFixedArray::valid — Check whether the array contains more elements SplFixedArray::__wakeup — Reinitialises the array after being unserialised
-
SplObjectStorage Class:该类提供了一个从对象到数据(或忽略数据)的map,是一种对象集合
SplObjectStorage::addAll — Adds all objects from another storage SplObjectStorage::attach — Adds an object in the storage SplObjectStorage::contains — Checks if the storage contains a specific object SplObjectStorage::count — Returns the number of objects in the storage SplObjectStorage::current — Returns the current storage entry SplObjectStorage::detach — Removes an object from the storage SplObjectStorage::getHash — Calculate a unique identifier for the contained objects SplObjectStorage::getInfo — Returns the data associated with the current iterator entry SplObjectStorage::key — Returns the index at which the iterator currently is SplObjectStorage::next — Move to the next entry SplObjectStorage::offsetExists — Checks whether an object exists in the storage SplObjectStorage::offsetGet — Returns the data associated with an object SplObjectStorage::offsetSet — Associates data to an object in the storage SplObjectStorage::offsetUnset — Removes an object from the storage SplObjectStorage::removeAll — Removes objects contained in another storage from the current storage SplObjectStorage::removeAllExcept — Removes all objects except for those contained in another storage from the current storage SplObjectStorage::rewind — Rewind the iterator to the first storage element SplObjectStorage::serialize — Serializes the storage SplObjectStorage::setInfo — Sets the data associated with the current iterator entry SplObjectStorage::unserialize — Unserializes a storage from its string representation SplObjectStorage::valid — Returns if the current iterator entry is valid