mirror of
https://github.com/php/php-src.git
synced 2026-04-29 11:13:36 +02:00
- Commite manually if not conatined in bunch commit
This commit is contained in:
Executable
+39
@@ -0,0 +1,39 @@
|
||||
--TEST--
|
||||
SPL: ArrayIterator implementing RecursiveIterator
|
||||
--SKIPIF--
|
||||
<?php if (!extension_loaded("spl")) print "skip"; ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
class MyRecursiveArrayIterator extends ArrayIterator implements RecursiveIterator
|
||||
{
|
||||
function hasChildren()
|
||||
{
|
||||
return is_array($this->current());
|
||||
}
|
||||
|
||||
function getChildren()
|
||||
{
|
||||
return new MyRecursiveArrayIterator($this->current());
|
||||
}
|
||||
}
|
||||
|
||||
$array = array(1, 2 => array(21, 22 => array(221, 222), 23 => array(231)), 3);
|
||||
|
||||
$dir = new RecursiveIteratorIterator(new MyRecursiveArrayIterator($array), RecursiveIteratorIterator::LEAVES_ONLY);
|
||||
|
||||
foreach ($dir as $file) {
|
||||
print "$file\n";
|
||||
}
|
||||
|
||||
?>
|
||||
===DONE===
|
||||
<?php exit(0); ?>
|
||||
--EXPECT--
|
||||
1
|
||||
21
|
||||
221
|
||||
222
|
||||
231
|
||||
3
|
||||
===DONE===
|
||||
Executable
+49
@@ -0,0 +1,49 @@
|
||||
--TEST--
|
||||
SPL: RecursiveIteratorIterator with custom iterator class
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$ar = array(1, 2, array(31, 32, array(331)), 4);
|
||||
|
||||
foreach(new RecursiveIteratorIterator(new ArrayObject($ar, 0, "RecursiveArrayIterator")) as $v) echo "$v\n";
|
||||
|
||||
$it = new ArrayObject($ar);
|
||||
var_dump($it->getIteratorClass());
|
||||
|
||||
try
|
||||
{
|
||||
foreach(new RecursiveIteratorIterator(new ArrayObject($ar)) as $v) echo "$v\n";
|
||||
}
|
||||
catch (InvalidArgumentException $e)
|
||||
{
|
||||
echo $e->getMessage() . "\n";
|
||||
}
|
||||
|
||||
echo "===MANUAL===\n";
|
||||
|
||||
$it->setIteratorClass("RecursiveArrayIterator");
|
||||
var_dump($it->getIteratorClass());
|
||||
foreach(new RecursiveIteratorIterator($it) as $v) echo "$v\n";
|
||||
|
||||
|
||||
?>
|
||||
===DONE===
|
||||
<?php exit(0); ?>
|
||||
--EXPECT--
|
||||
1
|
||||
2
|
||||
31
|
||||
32
|
||||
331
|
||||
4
|
||||
string(13) "ArrayIterator"
|
||||
An instance of RecursiveIterator or IteratorAggregate creating it is required
|
||||
===MANUAL===
|
||||
string(22) "RecursiveArrayIterator"
|
||||
1
|
||||
2
|
||||
31
|
||||
32
|
||||
331
|
||||
4
|
||||
===DONE===
|
||||
Reference in New Issue
Block a user