RecursiveArrayIterator::getChildren()
(PHP 5 >= 5.1.0, PHP 7)
Returns an iterator for the current entry if it is an array or an object
说明
public RecursiveArrayIterator::getChildren( void) :RecursiveArrayIterator
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.
范例
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
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"
}
}