PHP 8.4.2 Released!

RecursiveArrayIterator::hasChildren

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

RecursiveArrayIterator::hasChildrenVérifie si l'entrée courante est un tableau ou un objet

Description

public RecursiveArrayIterator::hasChildren(): bool

Vérifie si l'entrée courante est un tableau ou un objet pour lequel un itérateur peut être obtenu via la méthode RecursiveArrayIterator::getChildren().

Liste de paramètres

Cette fonction ne contient aucun paramètre.

Valeurs de retour

Retourne true si l'entrée courante est un tableau ou un objet, false sinon.

Exemples

Exemple #1 Exemple avec RecursiveArrayIterator::hasChildren()

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

$iterator = new RecursiveArrayIterator($fruits);

while (
$iterator->valid()) {

// Vérifie s'il y a des fils
if ($iterator->hasChildren()) {
// Affiche tous les fils
foreach ($iterator->getChildren() as $key => $value) {
echo
$key . ' : ' . $value . "\n";
}
} else {
echo
"Aucun fils.\n";
}

$iterator->next();
}
?>

L'exemple ci-dessus va afficher :

Aucun fils.
Aucun fils.
a : apple
p : pear

Voir aussi

add a note

User Contributed Notes 1 note

up
1
Dominik
9 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 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
To Top