我可以在不将其转换为数组的情况下对迭代器进行排序吗?

时间:2018-04-05 12:25:33

标签: php iterator

我有一个实现$iterator界面的对象Iterator,我想对其中的所有项目进行排序。

class MyIterator implements Iterator
{
    public function current() {
        return rand(0,10);
    }
}
$iterator = new MyIterator();
uasort($iterator, function($a, $b) {

});

不幸的是:uasort()ArrayIterator::uasort()仅适用于数组,我可能必须使用iterator_to_array()

将数组转换为迭代器

编辑:不再使用Doctrine查询构建器迭代作为示例。

1 个答案:

答案 0 :(得分:0)

我不能。我必须先将它转换为数组。

public function sort(iterable $iterator, $expression) {
    if (is_array($iterator)===false) {
        $iterator = iterator_to_array($iterator);
    }
}