函数名:RecursiveIteratorIterator::__construct()
函数描述:该函数用于创建一个递归迭代器迭代器对象。
用法:new RecursiveIteratorIterator($iterator, $mode, $flags)
参数:
- $iterator:必需,要迭代的对象,通常是一个实现了RecursiveIterator接口的对象。
- $mode:可选,迭代器模式。默认为RecursiveIteratorIterator::LEAVES_ONLY,表示只迭代叶子节点。其他可选值有:
- RecursiveIteratorIterator::SELF_FIRST:先迭代父节点,再迭代子节点。
- RecursiveIteratorIterator::CHILD_FIRST:先迭代子节点,再迭代父节点。
- $flags:可选,控制迭代器的行为。默认为0,没有特殊行为。可选值有:
- RecursiveIteratorIterator::CATCH_GET_CHILD:捕获getChildren()方法的异常。
- RecursiveIteratorIterator::THROW_ON_INVALID_ITERATION:在迭代器无效时抛出异常。
返回值:迭代器对象。
示例:
// 创建一个数组迭代器
$array = array('a', 'b', array('c', 'd', 'e'));
$iterator = new RecursiveArrayIterator($array);
// 创建递归迭代器迭代器对象
$recursiveIterator = new RecursiveIteratorIterator($iterator);
// 遍历迭代器
foreach ($recursiveIterator as $key => $value) {
echo $key . ' => ' . $value . PHP_EOL;
}
输出结果:
0 => a
1 => b
0 => c
1 => d
2 => e
在上面的示例中,我们创建了一个数组迭代器,并将其作为参数传递给RecursiveIteratorIterator的构造函数。然后,通过foreach循环遍历迭代器,输出每个元素的键和值。由于我们使用了默认的迭代器模式和标志,所以只迭代了叶子节点,并且没有发生任何异常。