PHP RecursiveIteratorIterator - Reverse and Count results

count, object, php, reverse

Solution

What you need is `iterator_to_array` you can try

$dir_iterator =  array_reverse(iterator_to_array($dir_iterator ));

To count Iterators what you need is :

$total_results = iterator_count( $dir_iterator );

Better Sill Implement Yours

$dir_iterator = new ReverseIterator($dir_iterator);

foreach ( $dir_iterator as $file ) {
    // do your thing
}

// To get total
echo count($dir_iterator);

Class Used

class ReverseIterator extends ArrayIterator implements Countable {
    private $t;

    public function __construct(Iterator $it) {
        $r = array_reverse(iterator_to_array($it));
        $this->t = count($r);
        parent::__construct($r);
        unset($r);
    }

    function count() {
        return $this->t;
    }
}

Problem

I have the following: ``` <?php $path = '/home/user/test'; $dir = new RecursiveDirectoryIterator( $path ); $iterator = new RecursiveIteratorIterator( $dir ); $dir_iterator = new RegexIterator( $iterator, '/^.+\.php/i', RecursiveRegexIterator::GET_MATCH ); ?> ``` So far so good, but I need to reverse the results, to archive the same effect as array_reverse() I tried like this, with no success: ``` <?php $dir_iterator = array_reverse( (array)$dir_iterator ); ?> ``` Also, how can I get the number of results returned? I tried this, but isn't working: ``` <?php $total_results = count( $dir_iterator ); ?> ``` Can anybody help me out? Many thanks in advance!

Original source