0

我试图理解我正在研究的代码的一小部分,这是代码的链接,我不明白的部分是这样的:

new RecursiveIteratorIterator($it, 1)

关于这部分我不明白的是第二个参数,我试图使用这个参数的值,我认为它是关于 XML 结构的,但它的逻辑有点奇怪,所以如果有人可以向我澄清关于第二个参数?

4

2 回答 2

4

好的,让我分解一下

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

 $it = simplexml_load_string($xmlstring, 'SimpleXMLIterator');

来自 PHP 文档

您可以使用此可选参数,以便 simplexml_load_string() 将返回指定类的对象。

这意味着所有输出都将使用SimpleXMLIterator,并且迭代的最佳方法是使用RecursiveIteratorIterator

Recursion是以自相似的方式重复项目的过程。见维基

例子

$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);
}

输出 1

With Just SimpleXmlIterator
abcd
efgh

输出 2

RecursiveIteratorIterator 
abcd
efgh
Test
Action
于 2012-09-27T19:44:54.483 回答
3

您应该阅读构造函数的文档。在此处复制相关部分:RecursiveIteratorIterator

可选模式。可能的值为

  • RecursiveIteratorIterator::LEAVES_ONLY - 默认值。列表只在迭代中离开。
  • RecursiveIteratorIterator::SELF_FIRST - 列出迭代中的叶子和父母,父母先来。
  • RecursiveIteratorIterator::CHILD_FIRST - 列出迭代中的叶子和父节点,叶子在前。
于 2012-09-27T19:29:14.857 回答