PHP SPL SplObjectStorage是用来存储一组对象的,特别是当你需要唯一标识对象的时候。

PHP SPL SplObjectStorage类实现了Countable,Iterator,Serializable,ArrayAccess四个接口。可实现统计、迭代、序列化、数组式访问等功能。

看下面一个简单的例子:

  1. class A {
  2. public $i;
  3. public function __construct($i) {
  4. $this->i = $i;
  5. }
  6. }
  7. $a1 = new A(1);
  8. $a2 = new A(2);
  9. $a3 = new A(3);
  10. $a4 = new A(4);
  11. $container = new SplObjectStorage();
  12. //SplObjectStorage::attach 添加对象到Storage中
  13. $container->attach($a1);
  14. $container->attach($a2);
  15. $container->attach($a3);
  16. //SplObjectStorage::detach 将对象从Storage中移除
  17. $container->detach($a2);
  18. //SplObjectStorage::contains用于检查对象是否存在Storage中
  19. var_dump($container->contains($a1)); //true
  20. var_dump($container->contains($a4)); //false
  21. //遍历
  22. $container->rewind();
  23. while($container->valid()) {
  24. var_dump($container->current());
  25. $container->next();
  26. }
转载请注明地址: http://www.phpddt.com/php/SplObjectStorage.html 尊重他人劳动成果就是尊重自己!

splObjectStroge的作用,实例化一个数组的更多相关文章

  1. splice() 方法通过删除现有元素和/或添加新元素来更改一个数组的内容。

    var myFish = ["angel", "clown", "mandarin", "surgeon"]; //从第 ...

  2. [PHP]将回调函数作用到给定数组的单元上

    ---------------------------------------------------------------------------------------------------- ...

  3. C#实现如何判断一个数组中是否有重复的元素 返回一个数组升序排列后的位置信息--C#程序举例 求生欲很强的数据库 别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework

    C#实现如何判断一个数组中是否有重复的元素   如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hasht ...

  4. 获取一个数组(vector)与查找值(value)的差最小绝对值的成员索引的算法

    代码如下: 函数作用:传递进来一个数组(vector),和一个需要查找的值(value),返回与value的差值绝对值最小的vector成员索引,若value不在vector范围中,则返回-1: in ...

  5. java中的内存划分和一个数组的内存图

    内存概述 内存是计算机中的重要原件,临时存储区域,作用是运行程序.我们编写的程序是存放在硬盘中的,在硬盘中的程序是不会运行的,必须放进内存中才能运行,运行完毕后会清空内存   Java虚拟机要运行程序 ...

  6. 求一个数组的最大子数组(C/C++实现)

    最大子数组:要求相连,加起来的和最大的子数组就是一个数组的最大子数组.编译环境:VS2012,顺便说句其实我是C#程序员,我只是喜欢学C++. 其实这是个半成品,还有些BUG在里面,不过总体的思路是这 ...

  7. PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?

    如题:如何判断一个数组是一维数组或者是二维数组?用什么函数? 判断数量即可 <?php if (count($array) == count($array, 1)) { echo '是一维数组' ...

  8. delphi 判断一个数组的长度用 Length 还是 SizeOf ?

    判断一个数组的长度用 Length 还是 SizeOf ?最近发现一些代码, 甚至有一些专家代码, 在遍历数组时所用的数组长度竟然是 SizeOf(arr); 这不合适! 如果是一维数组.且元素大小是 ...

  9. 枚举/遍历 一个数组NSArray/NSDictionary

    一,当枚举一个数组的时候: 1.使用 for (id object in array) 如果是顺序枚举 2.使用 for (id object in [arrary reverseObjectEnum ...

随机推荐

  1. ThreadPoolExecutor运转机制详解

    ThreadPoolExecutor运转机制详解 - 走向架构师之路 - 博客频道 - CSDN.NET 最近发现几起对ThreadPoolExecutor的误用,其中包括自己,发现都是因为没有仔细看 ...

  2. oracle锁

    1.概念 数据库中有两种基本的锁类型:排它锁(Exclusive Locks,即X锁)和共享锁(Share Locks,即S锁). 当数据对象被加上排它锁时,其他的事务不能对它读取和修改:加了共享锁的 ...

  3. JMS笔记(二)

    接上篇 JMS笔记(一),启动ActiveMQ后,打开http://127.0.0.1:8161/admin管理界面,用户名admin密码admin,点击上面的Queues菜单,创建一个q_test_ ...

  4. 有关ftp4j的FTPListParseException异常

    昨天换了个ftp服务器,发现程序出现了异常it.sauronsoftware.ftp4j.FTPListParseException,网上搜了下,说是FTPClient.list()时it.sauro ...

  5. iOS下获取用户当前位置的信息

    #import <MapKit/MKMapView.h> @interface ViewController (){ CLLocationManager *_currentLoaction ...

  6. Web前端学习笔记1

    Day1. 1.Windows常用快捷键. 快捷键 功能 ctrl+c 复制 ctrl+v 粘贴 ctrl+x 剪切(复制和剪切后都可以粘贴) ctrl+a 全选 ctrl+s 保存 ctrl+tab ...

  7. ASP.NET二级域名站点共享Session状态

    我的前面一篇文章提到了如何在使用了ASP.NET form authentication的二级站点之间共享登陆状态, http://www.cnblogs.com/jzywh/archive/2007 ...

  8. AngularJS Boostrap Pagination Sample

    首先,样式是这样的 首先,Service端是Webapi REST JSON格式 第二,我们建立一个Wrapper Class,这里你也可以定义一个Generic<T>,作为示例,我们这里 ...

  9. Contoso 大学 - 8 – 实现继承

    原文 Contoso 大学 - 8 – 实现继承 By Tom Dykstra, Tom Dykstra is a Senior Programming Writer on Microsoft's W ...

  10. Contoso 大学 - 4 - 创建更加复杂的数据模型

    原文 Contoso 大学 - 4 - 创建更加复杂的数据模型 原文地址:http://www.asp.net/mvc/tutorials/getting-started-with-ef-using- ...