文字

RecursiveArrayIterator::hasChildren

(PHP 5 >= 5.1.0)

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

说明

public bool RecursiveArrayIterator::hasChildren ( void )

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

参数

此函数没有参数。

返回值

Returns TRUE if the current entry is an array or an object , otherwise FALSE is returned.

范例

Example #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 ();
}
?>

以上例程会输出:

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

参见

  • RecursiveArrayIterator::getChildren() - Returns an iterator for the current entry if it is an array or an object.

用户评论:

[#1] Dominik [2015-01-23 11:20:52]

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

上一篇: 下一篇: