0

私は勉強しているコードの小さな部分を理解しようとしています.これはコードへのリンクです.私が理解していなかった部分はこれです:

new RecursiveIteratorIterator($it, 1)

この部分について私が理解できなかったのは 2 番目のパラメーターです。このパラメーターの値をいじってみましたが、XML 構造に関するものだと思いますが、そのロジックは少し奇妙です。この2番目のパラメーターについて?

4

2 に答える 2

4

分解させてください

最初に理解する必要があるのは、この行です。

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

PHPDOCから

simplexml_load_string()が指定されたクラスのオブジェクトを返すように、このオプションのパラメーターを使用できます。

これは、すべての出力が使用されることを意味しSimpleXMLIterator、反復するための最良の方法はを使用することですRecursiveIteratorIterator

Recursion自己相似的な方法でアイテムを繰り返すプロセスです。wikiを参照してください

$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 に答える