• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • RecursiveIteratorIterator::__construct()

    (PHP 5 >= 5.1.3, PHP 7)

    Construct a RecursiveIteratorIterator

    说明

    publicRecursiveIteratorIterator::__construct(Traversable$iterator[,int $mode= RecursiveIteratorIterator::LEAVES_ONLY[,int $flags= 0]])

    Creates a RecursiveIteratorIterator from a RecursiveIterator.

    参数

    $iterator

    The iterator being constructed from. Either a RecursiveIterator or IteratorAggregate.

    $mode

    Optional mode. Possible values are

    • RecursiveIteratorIterator::LEAVES_ONLY- The default. Lists only leaves in iteration.
    • RecursiveIteratorIterator::SELF_FIRST- Lists leaves and parents in iteration with parents coming first.
    • RecursiveIteratorIterator::CHILD_FIRST- Lists leaves and parents in iteration with leaves coming first.
    $flags

    Optional flag. Possible values are RecursiveIteratorIterator::CATCH_GET_CHILD which will then ignore exceptions thrown in calls to RecursiveIteratorIterator::getChildren().

    返回值

    没有返回值。

    范例

    Iterating a RecursiveIteratorIterator

    <?php
    $array = array(
        array(
            array(
                array(
                    'leaf-0-0-0-0',
                    'leaf-0-0-0-1'
                ),
                'leaf-0-0-0'
            ),
            array(
                array(
                    'leaf-0-1-0-0',
                    'leaf-0-1-0-1'
                ),
                'leaf-0-1-0'
            ),
            'leaf-0-0'
        )
    );
    $iterator = new RecursiveIteratorIterator(
        new RecursiveArrayIterator($array),
        $mode
    );
    foreach ($iterator as $key => $leaf) {
        echo "$key => $leaf", PHP_EOL;
    }
    ?>
    

    Output with $mode = RecursiveIteratorIterator::LEAVES_ONLY

    0 => leaf-0-0-0-0
    1 => leaf-0-0-0-1
    0 => leaf-0-0-0
    0 => leaf-0-1-0-0
    1 => leaf-0-1-0-1
    0 => leaf-0-1-0
    0 => leaf-0-0
    

    Output with $mode = RecursiveIteratorIterator::SELF_FIRST

    0 => Array
    0 => Array
    0 => Array
    0 => leaf-0-0-0-0
    1 => leaf-0-0-0-1
    1 => leaf-0-0-0
    1 => Array
    0 => Array
    0 => leaf-0-1-0-0
    1 => leaf-0-1-0-1
    1 => leaf-0-1-0
    2 => leaf-0-0
    

    Output with $mode = RecursiveIteratorIterator::CHILD_FIRST

    0 => leaf-0-0-0-0
    1 => leaf-0-0-0-1
    0 => Array
    1 => leaf-0-0-0
    0 => Array
    0 => leaf-0-1-0-0
    1 => leaf-0-1-0-1
    0 => Array
    1 => leaf-0-1-0
    1 => Array
    2 => leaf-0-0
    0 => Array
    
    Note: the missing documentation of the argument list for this constructor is currently as follows (according to source code).
    Param iter: see RecursiveIterator
    Param mode:
    - LEAVES_ONLY = (default) only iterate leaves
    - SELF_FIRST = iterate parents prior to children
    - CHILD_FIRST = iterate children prior to parents
    Param flags:
    - CATCH_GET_CHILD = ignore exceptions in getChildren() call
    Note that LEAVES_ONLY, SELF_FIRST and CHILD_FIRST do not work by themselves.
    They are class constants so you need to use RecursiveIteratorIterator::LEAVES_ONLY, etc.