php+spl+栈,PHP SPL标准库之数据结构栈(SplStack)介绍

栈(Stack)是一种特殊的线性表,因为它只能在线性表的一端进行插入或删除元素(即进栈和出栈)

3218b87075733c7a480e75a6e085278c.png

SplStack就是继承双链表(SplDoublyLinkedList)实现栈。

类摘要如下:

4993e7868a564aaf656c011268aa6cd9.png

简单使用如下:

//把栈想象成一个颠倒的数组

$stack = new SplStack();

/**

* 可见栈和双链表的区别就是IteratorMode改变了而已,栈的IteratorMode只能为:

* (1)SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_KEEP (默认值,迭代后数据保存)

* (2)SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_DELETE (迭代后数据删除)

*/

$stack->setIteratorMode(SplDoublyLinkedList::IT_MODE_LIFO | SplDoublyLinkedList::IT_MODE_DELETE);

$stack->push('a');

$stack->push('b');

$stack->push('c');

$stack->pop(); //出栈

$stack->offsetSet(0, 'first');//index 为0的是最后一个元素

foreach($stack as $item) {

echo $item . PHP_EOL; // first a

}

print_R($stack); //测试IteratorMode

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559651.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

深度理解java jvm,深度理解JVM

深入理解java虚拟机要讲的内容了解历史垃圾回收机制性能监控工具性能调优案例实战认识类的文件结构类加载机制字节码执行引擎虚拟机编译及运行时优化Java线程高级1. 环境搭建安装jdk2. 内存溢出场景模拟public class Test01 {public static void main(String[] args) {//测试内…

php用json_encode编码后乱码,php json_encode()函数中文编码乱码解决方法_PHP教程

在我使用php json_encode()时,如果是英文或数字没一点问题,但是用到中文是居然出现不可识别的中文乱码了,下面看我解决json_encode中文乱码方法。在网上找到一种解决方法:代码如下复制代码后来请教了别人,还可以用base…

oracle 根据用户备份,Oracle基于用户的备份及恢复

要执行exp或imp命令,首先: 1.看Oracle安装目录的bin目录下有没有 exp.exe和 imp.exe这两个文件,要不然可能无法执行这个命令的要执行exp或imp命令,首先:1.看Oracle安装目录的bin目录下有没有 exp.exe和 imp.exe这两个文…

oracle数据库sql的执行过程,Oracle体系结构之SQL语句的执行过程

一般来说,数据库处理SQL都会经过三个过程:解析(parse)、执行(exec)、返回结果(fetch)1.解析当用户发起一个SQL语句时,Oracle通过Server Process 接收SQL语句到达oracle实例,并在Shared pool 中的 Library Cache 查找是否存在该语句对应执行计划的缓存。如…

otb100matlab,ECO for tracking 在 OTB100 基准测试和 VOT2016 数据集中的实验结果

目前本文所涉内容均未使用图形处理器。运行在有图形处理器环境下的实验将在稍后补充,敬请关注。需要准备的文章和工具有:一、集成 OTB1001.1 下载基准测试在该目录中可以看到:trackers 目录中已经包含了若干跟踪算法。而我们要做的就是把 ECO…

如何设置oracle_home变量,oracle-如何在Ubuntu 9.x上正确设置ORACLE_HOME变量?

oracle-如何在Ubuntu 9.x上正确设置ORACLE_HOME变量?我遇到了与此处列出的问题相同的问题:尽管我没有丢失密码,但如何恢复或更改Oracle sysdba密码,我最初在configure脚本中输入了两次,然后登录(localhost:…

oracle脱机什么意思,脱机的是什么意思

1. 或者是,将记录传送到脱机系统去处理,以降低交换机的负荷。Alternatively, the records can be transferred to an off-line system for processing, to reduce the load on the exchange.2. 虽然第三方可用的应用软件很少,但在 Windows 1.…

oracle adg 备份,Oracle Physical Dataguard环境使用RMAN备份和恢复

Oracle Physical Dataguard环境使用RMAN备份和恢复由于Physical Dataguard使用的是块恢复技术来保持和PRIMARY的一致性,因此可以在STANDBY上进行rman备份,从而减轻PRIMARY的压力.当PRIMARY出现数据库故障时,可以使用在STANDBY上的备份来进行恢…

matlab遗传算法配送路径,基于Matlab物流配送路径优化问题遗传算法的实现

维普资讯 http://doc.docsou.com第2 9卷总第 1 1 3期物流商坛物流配送路径优化问题遗传算法的实现The Re lz to f Ge tc Al o ih o a ia i n o ne i g r t m f VRP Ba e o t e M a l b s d n h tap p p p p p p p p p p p p p p ) ≯≯ p p p p ≯ ≯ p≯≯≯≯≯≯≯弓晋丽 .程…

oracle 测试库搭建,Oracle Study之--通过RMAN克隆测试库

Oracle Study之--通过RMAN克隆测试库通过使用数据库备份,DBA可以在同一服务器或其它服务器上建立副本数据库。这个副本数据库可以和主数据库有相同的名称(拷贝)或与主数据库名称不同(克隆)。ORACLE在数据库拷贝和数据库克隆之间惟一不同的是拷贝的数据库不能更改名称…

清空临时表oracle,【Oracle相关】Oracle中如何清空临时表空间

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼【问题】数据库临时表空间占用空间太大,暂用大量磁盘空间。【处理】清空临时表空间Oracle1.启动数据库 startup2.查看当前的数据库默认表空间:SQL>select * from database_properties whereproperty_name…

linux挂载目录到分区,Ubuntu7.10下挂载/home目录到一个分区的方法

最近在一个9.5G的旧硬盘上装了个Ubuntu7.10,在安装时选择了自动分区安装,结果只有两个分区,/和swap,后来觉得一妥,就用gparted重新调整了分区,现在想把砍出事的分区挂载/home目录。昨晚试了一晚都没有弄好&…

linux 内存规划,生产场景怎么对linux系统进行合理规划分区?

分区的根本原则是简单、易用、方便批量管理。根据服务器角色定位建议如下:①单机服务器:如8G内存,300G硬盘分区: /boot 100-200M,swap 16G,内存大小8G*2,/ 80G,/var 20G(也可不分)&a…

linux终端美化,如何美化你的命令行终端Terminal

Linux下的终端是很有魅力的,你可以进行些简单的配置让它变得更加华丽,让枯燥的命令行也变得生动起来。下面进行些配置是我使用的,先看下效果图命令行是以我非常喜欢的Avirl为背景的,同时把终端的字体放大了,字体颜色为…

linux重启服务挂载盘消失,如何处理ECS Linux服务器重启服务器、初始化系统后数据盘不见了的情况...

本文在介绍如何处理ECS Linux服务器重启服务器、初始化系统后数据盘不见了的情况的基础上,重点探讨了其具体步骤,本文内容紧凑,希望大家可以有所收获。ECS Linux服务器重启服务器、初始化系统后数据盘不见了问题现象:Linux系统服务…

linux测试函数耗时tick数,C语言中怎样测验函数执行时间

有4种方法可以达成测算程序运行时间的目的。它们分别是使用clock, times, gettimeofday, getrusage来实现的。下面就来逐一介绍,并比较它们的优劣点。系统测试环境:VirtualBox (Ubuntu 9.10)gcc version 4.4.1libc6 2.10.1-0ubuntu16Core Duo T2500 2GMH…

linux 修改Db2主机名,对DB2服务器主机名的修改的正确操作流程

文章主要描述的是如何正确的对DB2服务器主机名的修改,在实际操作中由于出于多种原因,在DB2数据库的服务器的实际使用过程中,用户有可能对DB2数据库服务器的主机名进行修改,本文详细介绍了修改DB2的主机名需要做的修改工作。环境:产…

x86_64 arm制linux-gcc,arm-linux-gcc 制作

序言:其实,如果没有充裕的时间,交叉编译器完全不用自己建,网上下载直接拿来用就可以了。之所以写这博客,一是为了和大家交流,二是为了防止由于时间的流逝再也找不到当初的笔记。人说好记星不如烂笔头&#…

obs捕获窗口没有窗口_学习工具 | 视频录制软件OBS

小编今天为你们带来了一位新朋友,它就是:OBS了解OBSOBS是免费和开源软件的视频录制和实时流。在 Windows、Mac 或 Linux 上都能够快速轻松地下载并开始流式传输。小知识:流式传输:主要指通过网络传送流媒体(如视频、音频)的技术总…

linux webshell 页面管理,instantbox:30s内快速搭建可通过webshell管理的Linux系统

点击上方蓝色字体,关注我们如何快速搭建一个Linux环境,肯定非docker莫属。但通过instantbox,可以带给我们比docker更好的体验:在不到 30s 内快速搭建一个干净、开箱即用的多个临时的Linux 系统,如Ubuntu、Centos、Arch…