RecursiveArrayIterator::hasChildren

(PHP 5 >= 5.1.0, PHP 7, PHP 8)

RecursiveArrayIterator::hasChildrenReturns whether current entry is an array or an object

Açıklama

public RecursiveArrayIterator::hasChildren(): bool

Returns whether current entry is an array or an object for which an iterator can be obtained via RecursiveArrayIterator::getChildren().

Bağımsız Değişkenler

Bu işlevin bağımsız değişkeni yoktur.

Dönen Değerler

Returns true if the current entry is an array or an object, otherwise false is returned.

Örnekler

Örnek 1 RecursiveArrayIterator::hasChildren() example

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

$iterator = new RecursiveArrayIterator($fruits);

while (
$iterator->valid()) {

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

$iterator->next();
}
?>

Yukarıdaki örneğin çıktısı:

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

Ayrıca Bakınız

add a note

User Contributed Notes 1 note

up
1
Dominik
10 years ago
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 children1: 0 (boolean) has no children0: element two (array) has children0: element three (array) has children1: 0 (boolean) has no children
To Top