【发布时间】:2012-01-21 03:47:17
【问题描述】:
我正在编写代码来管理一组独特的对象。这段代码的第一个原型使用了一个关联数组,基本上我一直都是这样做的。
但是,我也热衷于利用已添加到更现代 PHP 版本中的功能(例如 [SplObjectStorage][1] '已经看到建议SplObjectStorage 在很多情况下可以比数组更快)。
当前的实现有一个关联数组,我用in_array() 检查一个对象是否已经在数组中,然后再添加一个新对象。
我可以看到SplObjectStorage 的一个大问题是它似乎(乍一看)不支持键/值关联数组行为,并且只能被视为索引数组。但是,PHP 新功能的文档不符合该语言更成熟部分的文档标准,我可能只是遗漏了一些东西。
我可以使用SplObjectStorage 代替关联数组吗?如果是这样,添加新对象时如何定义键?更重要的是,与关联数组相比,SplObjectStorage 的相对优缺点是什么?
【问题讨论】:
-
@ajreal:我不认为我的问题和你说的那么相似。
-
仔细看了看,但仍然看不到我的问题(您可以使用 SplObjectStorage 代替 associative 数组吗?如果可以,有什么好处和缺点? ) 是那个的副本(为什么我不能将字符串放在 SplObjectStorage 中?)
-
我认为问题已经表明如果你想做关联数组,然后使用 spl 对象哈希,并附加到 spl 存储对象。退税?很麻烦。 spl存储对象的好处是因为使用了索引键(参见实现只使用next,prev来推进指针)。而放回关联键只是违背了目的。这就是我的想法。
标签: php oop associative-array spl