SplObjectStorage 的自定义迭代

Custom iteration for SplObjectStorage

我想修改迭代 SPLObjectStorage 对象的方式,比如先按数据(信息)排序。

所以,在一个循环中,它从 a 到 z(使用 sort() 函数)

但是,在 SPLObjectStorage 中,无法访问数组,对吗?

是否可以这样做,因为我们无法访问对象数组??

不,这不可能。在内部 SplobjectStorage 使用与数组相同的数据结构(HashTable),但它不是我们从 PHP 用户区知道的 "array-array":我们只添加值而不是键,因为键实际上是通过散列值从值生成的(您甚至可以通过覆盖 getHash 方法来覆盖它)。另一个区别是您可以向对象额外添加信息。

总之,SplObjectStorage不应该作为一个数组来使用,而是作为一个set或者一个map,这就是它的优势所在。