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

Standard PHP Library(SPL)中的数据结构的更多相关文章

  1. php spl标准库简介(SPL是Standard PHP Library(PHP标准库)(直接看代码实例,特别方便)

    php spl标准库简介(SPL是Standard PHP Library(PHP标准库)(直接看代码实例,特别方便) 一.总结 直接看代码实例,特别方便易懂 thinkphp控制器利眠宁不支持(说明 ...

  2. [c++] STL = Standard Template Library

    How many people give up, because of YOU. Continue... 先实践,最后需要总结. 1. 数据流中的数据按照一定的格式<T>提取 ------ ...

  3. C++ Standard Template Library STL(undone)

    目录 . C++标准模版库(Standard Template Library STL) . C++ STL容器 . C++ STL 顺序性容器 . C++ STL 关联式容器 . C++ STL 容 ...

  4. 自定义标签 与 JSTL(JSP Standard Tag Library)

    1.自定义标签 [理解]     [1]简介            > 在JSP2.0以后,在jsp页面中不建议使用脚本片段<% %>和JSP表达式<%= %>     ...

  5. JSTL的全称:JSP Standard Tag Library, jsp 标准标签库

    JSTL的全称:JSP Standard Tag Library, jsp 标准标签库 JSTL的作用     提供给Java web开发人员一个标准通过的标签函数库和EL来取代传统直接在页面上嵌入j ...

  6. JSTL(JSP Standard Tag Library ,JSP标准标签库)

    JSTL标签之核心标签   JSTL(JSP Standard Tag Library ,JSP标准标签库)是一个实现 Web应用程序中常见的通用功能的定制标记库集,这些功能包括迭代和条件判断.数据管 ...

  7. JSTL 标准标签库 (JavaServer Pages Standard Tag library, JSTL)

    JSP标准标签库(JavaServer Pages Standard Tag Library,JSTL)是一个定制标签库的集合,用来解决 像遍历Map或集合.条件测试.XML处理,甚至数据 库访问和数 ...

  8. [C#] .NET Core/Standard 1.X 项目中如何使用XmlIgnoreAttribute等标准范围外的内容,兼谈如何解决“violation of security transparency rules failed”(违反安全透明规则失败)异常

    作者: zyl910 一.缘由 XML序列化是一个很常用的功能,但对于.NET Core/Standard,其直到2.0版才内置支持XML序列化.具体来说, .NET Core 2.0 或 .NET ...

  9. 为什么要使用 SPL中的 SplQueue实现队列

    今天看php的SPL标准库部分里面涉及到数据结构其中有 SplQueue 来实现队列效果,但是我刚接触php的时候学习到的是 使用array的 array_push 和 array_pop 就可以实现 ...

随机推荐

  1. 两行 CSS 代码实现 PNG 任意颜色赋色技术

    很久之前在张鑫旭大大的博客看到过一篇 PNG格式小图标的CSS任意颜色赋色技术,当时惊为天人,感慨还可以这样玩,私底下也曾多次想过有没有其他方法可以实现. 本方法与上面 ZXX 的方法及流传的使用 f ...

  2. Python爬虫(十一)_案例:使用正则表达式的爬虫

    本章将结合先前所学的爬虫和正则表达式知识,做一个简单的爬虫案例,更多内容请参考:Python学习指南 现在拥有了正则表达式这把神兵利器,我们就可以进行对爬取到的全部网页源代码进行筛选了. 下面我们一起 ...

  3. 移动 云MAS 发短信 .net HTTP 请求

    本人开发移动云MAS .net Http 请求  代码如下 using Newtonsoft.Json.Linq; using System; using System.Collections.Gen ...

  4. 改动hosts权限

    在屏蔽网页.訪问一些特定局域网的时候,都可能须要改动Hosts文件. 只是在改动Hosts文件后.会遇到无法保存的情况,提示"您没有权限在此位置中保存文件,请与管理员联系以获取对应权限&qu ...

  5. [Sqoop]利用sqoop对mysql运行DML操作

    业务背景 利用sqoop对mysql进行查询.加入.删除等操作. 业务实现 select操作: sqoop eval \ --connect jdbc:mysql://127.0.0.1:3306/m ...

  6. js通用方法检測浏览器是否已安装指定插件(IE与非IE通用)

    /* * 检測是否已安装指定插件 * * pluginName 插件名称 */ function checkPlugins(pluginName) { var np = navigator.plugi ...

  7. Struts2中validate数据校验的两种常用方法

    本文主要介绍Struts2中validate数据校验的两种方法及Struts2常用校验器.  1.Action中的validate()方法 Struts2提供了一个Validateable接口,这个接 ...

  8. ABP入门系列(21)——切换MySQL数据库

    ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 引言 Abp支持MySql已经不是什么新鲜事了,但按照官方文档:Entity Framewo ...

  9. APP之构架自己的webapi框架

    当我们学习到一定程度的时候,我们会想要去深入了解代码底层的东西,也更想拥有一个属于自己的框架.本文可能成为编写一个webapi框架的开端.有研究MVC框架的朋友会发现,mvc框架的路由MvcRoute ...

  10. 33 款主宰 2017 iOS 开发的开源库

    推荐一篇文章 改文章汇聚了现在主流的一些三方框架,很值得一看 https://mp.weixin.qq.com/s/ICodliohtzbmA-eLKRFT-Q