hasChildren() 的工作方式与这里记录的一致,但与它的名称不同。
该方法不会返回当前条目是否实际上 *有* 子节点。它只返回元素的类型是否能够有子节点。
如果您正在处理空数组,这有点违反直觉。
示例
<?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) 有子节点\n";
} else {
echo "$depth: $key ($type) 没有子节点\n";
}
}
?>
结果
0: element one (array) 有子节点
1: 0 (boolean) 没有子节点
0: element two (array) 有子节点
0: element three (array) 有子节点
1: 0 (boolean) 没有子节点