SplObjectStorage 的自定义迭代
Custom iteration for SplObjectStorage
我想修改迭代 SPLObjectStorage 对象的方式,比如先按数据(信息)排序。
所以,在一个循环中,它从 a 到 z(使用 sort() 函数)
但是,在 SPLObjectStorage 中,无法访问数组,对吗?
是否可以这样做,因为我们无法访问对象数组??
不,这不可能。在内部 SplobjectStorage
使用与数组相同的数据结构(HashTable
),但它不是我们从 PHP 用户区知道的 "array-array":我们只添加值而不是键,因为键实际上是通过散列值从值生成的(您甚至可以通过覆盖 getHash
方法来覆盖它)。另一个区别是您可以向对象额外添加信息。
总之,SplObjectStorage不应该作为一个数组来使用,而是作为一个set或者一个map,这就是它的优势所在。
我想修改迭代 SPLObjectStorage 对象的方式,比如先按数据(信息)排序。
所以,在一个循环中,它从 a 到 z(使用 sort() 函数)
但是,在 SPLObjectStorage 中,无法访问数组,对吗?
是否可以这样做,因为我们无法访问对象数组??
不,这不可能。在内部 SplobjectStorage
使用与数组相同的数据结构(HashTable
),但它不是我们从 PHP 用户区知道的 "array-array":我们只添加值而不是键,因为键实际上是通过散列值从值生成的(您甚至可以通过覆盖 getHash
方法来覆盖它)。另一个区别是您可以向对象额外添加信息。
总之,SplObjectStorage不应该作为一个数组来使用,而是作为一个set或者一个map,这就是它的优势所在。