文字

RecursiveArrayIterator::getChildren

(PHP 5 >= 5.1.0)

RecursiveArrayIterator::getChildrenReturns an iterator for the current entry if it is an array or an object .

说明

public RecursiveArrayIterator RecursiveArrayIterator::getChildren ( void )

Returns an iterator for the current iterator entry.

参数

此函数没有参数。

返回值

An iterator for the current entry, if it is an array or object .

错误/异常

An InvalidArgumentException will be thrown if the current entry does not contain an array or an object .

范例

Example #1 RecursiveArrayIterator::getChildren() example

<?php
$fruits 
= array( "a"  =>  "lemon" "b"  =>  "orange" , array( "a"  =>  "apple" "p"  =>  "pear" ));

$iterator  = new  RecursiveArrayIterator ( $fruits );

while (
$iterator -> valid ()) {

    if (
$iterator -> hasChildren ()) {
        
// print all children
        
foreach ( $iterator -> getChildren () as  $key  =>  $value ) {
            echo 
$key  ' : '  $value  "\n" ;
        }
    } else {
        echo 
"No children.\n" ;
    }

    
$iterator -> next ();
}
?>

以上例程会输出:

No children.
No children.
a : apple
p : pear

参见

  • RecursiveArrayIterator::hasChildren() - Returns whether current entry is an array or an object.

用户评论:

[#1] 814ckf0x [2014-03-05 20:44:39]

RecursiveArrayIterator::getChildrens returns a copy of the children, not a reference:
<?php
$stack 
= array ("some" => "value",
                array (
"subsome" => "subvalue", array ("subsubsome" => "subsubvalue")),
                
"some1" => "value1");

$object = new RecursiveArrayIterator ($stack);
$object->next ();
$second_object = &$object->getChildren ();

$second_object->next ();

$third_object = &$second_object->getChildren ();

$third_object->offsetSet ("subsubsome""subsubdiferent");

var_dump ($object);
var_dump ($second_object);
var_dump ($third_object);
?>


returns: 

object(RecursiveArrayIterator)#1 (1) {
  ["storage":"ArrayIterator":private]=>
  array(3) {
    ["some"]=>
    string(5) "value"
    [0]=>
    array(2) {
      ["subsome"]=>
      string(8) "subvalue"
      [0]=>
      array(1) {
        ["subsubsome"]=>
        string(11) "subsubvalue" <--- expected to be changed
      }
    }
    ["some1"]=>
    string(6) "value1"
  }
}
object(RecursiveArrayIterator)#2 (1) {
  ["storage":"ArrayIterator":private]=>
  array(2) {
    ["subsome"]=>
    string(8) "subvalue"
    [0]=>
    array(1) {
      ["subsubsome"]=>
      string(11) "subsubvalue" <--- expected to be changed
    }
  }
}
object(RecursiveArrayIterator)#3 (1) {
  ["storage":"ArrayIterator":private]=>
  array(1) {
    ["subsubsome"]=>
    string(14) "subsubdiferent"
  }
}

上一篇: 下一篇: