Php、SimpleXMLIterator、递归迭代器

Php、SimpleXMLIterator、递归迭代器,php,simplexml,Php,Simplexml,我试图理解我正在学习的代码的一小部分, 这是对代码的理解,我不理解的部分是: new RecursiveIteratorIterator($it, 1) 关于这一部分,我不了解的是第二个参数,我尝试使用这个参数的值,我假设它是关于XML结构的,但是它的逻辑有点奇怪,所以如果有人能向我澄清第二个参数,你应该阅读文档以了解第二个参数。在此复制相关部分: 可选模式。可能的值是 递归迭代器::仅保留默认值。只列出迭代中的叶子。 RecursiveIteratorIterator::SELF_FIRST

我试图理解我正在学习的代码的一小部分, 这是对代码的理解,我不理解的部分是:

new RecursiveIteratorIterator($it, 1)

关于这一部分,我不了解的是第二个参数,我尝试使用这个参数的值,我假设它是关于XML结构的,但是它的逻辑有点奇怪,所以如果有人能向我澄清第二个参数,你应该阅读文档以了解第二个参数。在此复制相关部分:

可选模式。可能的值是

递归迭代器::仅保留默认值。只列出迭代中的叶子。 RecursiveIteratorIterator::SELF_FIRST-列出迭代中的叶子和父母,父母排在第一位。 RecursiveIteratorIterator::CHILD_FIRST-列出迭代中的叶子和父元素,叶子排在第一位。
好的,让我把它分解一下

您首先需要了解的是这一行:

 $it = simplexml_load_string($xmlstring, 'SimpleXMLIterator');
来自PHP文档

您可以使用此可选参数,以便simplexml\u load\u字符串将返回指定类的对象

这意味着所有输出都将使用SimpleXMLIterator,而迭代的最佳方式是使用递归迭代器

递归是以自相似方式重复项的过程

范例

$xml = '
<movies>
  <movie>abcd</movie>
  <movie>efgh</movie>
  <movie>
    <name> Test </name>
    <type> Action </type>   
    </movie>    
</movies>';


echo "<pre>" ;
echo "With Just SimpleXmlIterator\n";

foreach (new SimpleXmlIterator($xml) as $value ) {
    print($value . PHP_EOL);
}


echo "<pre>" ;
echo " RecursiveIteratorIterator \n";

foreach (new RecursiveIteratorIterator  (new SimpleXmlIterator($xml)) as $value ) {
    print(trim($value) . PHP_EOL);
}
产出2


谢谢你Baba的重播,如果我没弄错的话,递归迭代器构造函数正在获取对象,我假设对象已转换为数组,然后它迭代递归数组中的所有值?…我想我得到了关于第二个参数的信息谢谢Sean Bright。不将示例代码放入到粘贴箱等的链接中的一个原因是,它很容易丢失。你的问题现在已经不清楚了。请再添加一次-但要添加到问题和您实际询问的部分,而不是一个100多行的脚本,只是提供问题上下文的示例代码
With Just SimpleXmlIterator
abcd
efgh
RecursiveIteratorIterator 
abcd
efgh
Test
Action