将usort()与实现ArrayIterator的对象一起使用

时间:2011-06-09 18:13:30

标签: php arrays usort

我有这堂课:

class ResultSet 
    implements ArrayAccess, Countable, Iterator {
     /// Rest of implementation ...
}

我遇到了使用usort()并将我的对象作为第一个参数传递的问题。 usort()需要一个数组而不是一个对象,但是考虑到我对ArrayAccess接口的实现,我不知道它还需要什么。

php返回的确切错误是: Warning: usort() expects parameter 1 to be array, object given

2 个答案:

答案 0 :(得分:0)

如果内存服务,则在ArrayAccess页面上或其中的一个注释中有一个很大的警告标志(实际上可能是后者)。它基本上按照以下顺序说:接口有点无用,因为PHP的数组函数不能将其任何成员识别为数组。

答案 1 :(得分:0)

usort如何知道您如何实施ArrayAccess?没有保留值的定义位置 - 灵活性是界面的重点。

如果要将元素存储在作为对象私有成员的数组中,则可以代理usort操作。例如:

public function usort($callback) {
    usort($this->container, $callback);
}