• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • RecursiveArrayIterator::hasChildren()

    (PHP 5 >= 5.1.0, PHP 7)

    Returns whether current entry is an array or an object

    说明

    publicRecursiveArrayIterator::hasChildren( void) : bool

    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.

    范例

    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
    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