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
2015-01-23 13:20:52
http://php5.kiev.ua/manual/ru/recursivearrayiterator.haschildren.html

    Поддержать сайт на родительском проекте КГБ