RecursiveArrayIterator::getChildren
(PHP 5 >= 5.1.0)
RecursiveArrayIterator::getChildren — Возвращает итератор для текущего элемента, если этот элемент является массивом (array) или объектом (object)
Описание
Возвращает итератор для текущего элемента.
Список параметров
У этой функции нет параметров.
Возвращаемые значения
Итератор для текущего элемента, если этот элемент является массивом (array) или объектом (object).
Ошибки
Метод выбрасывает исключение InvalidArgumentException, если текущий элемент не содержит массивов (array) или объектов (object).
Примеры
Пример #1 Пример использования RecursiveArrayIterator::getChildren()
<?php
$fruits = array("a" => "lemon", "b" => "orange", array("a" => "apple", "p" => "pear"));
$iterator = new RecursiveArrayIterator($fruits);
while ($iterator->valid()) {
if ($iterator->hasChildren()) {
// выводим информацию о всех дочерних элементах
foreach ($iterator->getChildren() as $key => $value) {
echo $key . ' : ' . $value . "\n";
}
} else {
echo "Дочерних элементов не обнаружено.\n";
}
$iterator->next();
}
?>
Результат выполнения данного примера:
Дочерних элементов не обнаружено. Дочерних элементов не обнаружено. a : apple p : pear
Смотрите также
- RecursiveArrayIterator::hasChildren() - Определяет, является ли текущий элемент массивом или объектом
Коментарии
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"
}
}