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 childrenRecursiveArrayIterator::hasChildren
Почист и полокален преглед на PHP референцата, со задржана структура од PHP.net и подобра читливост за примери, секции и белешки.
RecursiveArrayIterator::hasChildren
Референца за `recursivearrayiterator.haschildren.php` со подобрена типографија и навигација.
RecursiveArrayIterator::hasChildren
(PHP 5 >= 5.1.0, PHP 7, PHP 8)
RecursiveArrayIterator::hasChildren — Returns whether current entry is an array or an object
= NULL
Returns whether current entry is an array или object for which an iterator can be obtained via RecursiveArrayIterator::getChildren().
Параметри
Оваа функција нема параметри.
Вратени вредности
Патеката до PHP скриптата што треба да се провери. true if the current entry is an array или object, инаку false се враќа.
Примери
Пример #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();
}
?>Пример #1 Пример што покажува затворачка ознака што го опфаќа последниот нов ред
No children. No children. a : apple p : pear
Види Исто така
- RecursiveArrayIterator::getChildren() - Враќа итератор за тековниот запис ако е низа или објект