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