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) 沒有子元素