when using iterators in PHP, you can use a function iterator_to_arrayto look at the array retrieval resulting from the iteration. For example, suppose you follow ArrayObject:
$array_object = new ArrayObject(array(
array('1', '2', '3', '4'),
array('5', '6', '7', '8'),
array('9', '10', '11', '12'),
));
As you can see, its storage is a two-dimensional array.
We can FilterOperatoronly use for its first element (I know it would be better with LimitIterator, this is just an example):
class myFilterIterator extends FilterIterator
{
public function accept()
{
return ($this->key() === 0);
}
}
$filter_iterator = new myFilterIterator(new ArrayIterator($array_object));
Now if I do:
print_r(iterator_to_array($filter_iterator));
I get an array that I could get if I manually go through the statement:
Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) )
But now what if I want to work with RecursiveFilterIterator? Let's say I have:
class myRecursiveFilterIterator extends RecursiveFilterIterator
{
public function accept()
{
return ($this->hasChildren() || $this->key() === 0);
}
}
$recursive_filter_iterator = new myRecursiveFilterIterator(new RecursiveArrayIterator($array_object));
, 0 , . , :
foreach (new RecursiveIteratorIterator($recursive_filter_iterator) as $value) {
print_r($value);
echo '<br />';
}
:
1
5
9
array(array(1), array(5), array(9))?
:
print_r(iterator_to_array($recursive_filter_iterator));
print_r(iterator_to_array($recursive_filter_iterator->getInnerIterator()));
$it = new RecursiveIteratorIterator($recursive_filter_iterator);
print_r(iterator_to_array($it->getInnerIterator()));
:
Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) [1] => Array ( [0] => 5 [1] => 6 [2] => 7 [3] => 8 ) [2] => Array ( [0] => 9 [1] => 10 [2] => 11 [3] => 12 ) )
:
print_r(iterator_to_array(new RecursiveIteratorIterator($recursive_filter_iterator)));
:
Array ( [0] => 9 )
:
print_r(iterator_to_array(new RecursiveIteratorIterator($recursive_filter_iterator->getInnerIterator())));
, 0:
Array ( [0] => 9 [1] => 10 [2] => 11 [3] => 12 )
:
Array ( [0] => Array ( [0] => 1 ) [1] => Array ( [0] => 5 ) [2] => Array ( [0] => 9 ) )
, , , , , iterator_to_array . , -, PHP, .
.