RecursiveArrayIterator::hasChildren
(PHP 5 >= 5.1.0, PHP 7)
RecursiveArrayIterator::hasChildren — Определяет, является ли текущий элемент массивом или объектом
Описание
public bool RecursiveArrayIterator::hasChildren
( void
)
Определяет, является ли текущий элемент массивом (array) или объектом (object). Эти сведения необходимо проверять, прежде чем вызывать метод RecursiveArrayIterator::getChildren().
Список параметров
У этой функции нет параметров.
Возвращаемые значения
Возвращает TRUE
, если текущий элемент является массивом (array)
или объектом (object), FALSE
в противном случае.
Примеры
Пример #1 Пример использования RecursiveArrayIterator::hasChildren()
<?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::getChildren() - Возвращает итератор для текущего элемента, если этот элемент является массивом (array) или объектом (object)
Коментарии
hasChildren() works as documented here, but not as its name suggests.
The method does not return whether the current entry actually *has* children. It only returns whether the element's type is one that is able to have children.
This is a bit counterintuitive if you are processing empty arrays.
Example:
<?php
$data = array(
"element one" => array(true),
"element two" => array(),
"element three" => array(true),
);
$i = new RecursiveIteratorIterator(new RecursiveArrayIterator($data),RecursiveIteratorIterator::SELF_FIRST);
foreach($i as $key => $value)
{
$type = gettype($value);
$depth = $i->getDepth();
if($i->hasChildren()) {
echo "$depth: $key ($type) has children\n";
} else {
echo "$depth: $key ($type) has no children\n";
}
}
?>
Result:
0: element one (array) has children
1: 0 (boolean) has no children
0: element two (array) has children
0: element three (array) has children
1: 0 (boolean) has no children