SimpleXMLElement::children

(PHP 5, PHP 7)

SimpleXMLElement::childrenНаходит дочерние элементы данного узла

Описание

public SimpleXMLElement::children ([ string $ns [, bool $is_prefix = FALSE ]] ) : SimpleXMLElement

Этот метод находит все дочерние элементы узла. Результат подчиняется стандартным правилам итерации.

Замечание: SimpleXML содержит правило добавления итеративных свойств к большинству методов. Они не могут быть просмотрены с использованием var_dump() или каких-либо других средств анализа объектов.

Список параметров

ns

Необязательное пространство имен XML.

is_prefix

Если is_prefix установлен в TRUE, ns будет рассмотрен как префикс. Если FALSE, ns будет рассмотрен как пространство имен URL.

Возвращаемые значения

Возвращает элемент SimpleXMLElement, даже если узел не имеет дочерних элементов.

Список изменений

Версия Описание
5.2.0 Добавлен необязательный параметр is_prefix.

Примеры

Пример #1 Обход псевдомассива children()

<?php
$xml 
= new SimpleXMLElement(
'<person>
 <child role="сын">
  <child role="дочь"/>
 </child>
 <child role="дочь">
  <child role="сын">
   <child role="сын"/>
  </child>
 </child>
</person>'
);

foreach (
$xml->children() as $second_gen) {
    echo 
' У человека родился(-ась) ' $second_gen['role'];

    foreach (
$second_gen->children() as $third_gen) {
        echo 
', у которого родился(-ась) ' $third_gen['role'] . ';';

        foreach (
$third_gen->children() as $fourth_gen) {
            echo 
' и у ' $third_gen['role'] .
                
' родился(-ась) ' $fourth_gen['role'];
        }
    }
}
?>

Результат выполнения данного примера:

У человека родился(-ась) сын, у которого родился(-ась) дочь; У человека
родился(-ась) дочь, у которого родился(-ась) сын; и у сын родился(-ась) сын

Пример #2 Использование пространства имен

<?php
$xml 
'<example xmlns:foo="my.foo.urn">
  <foo:a>Яблоко</foo:a>
  <foo:b>Банан</foo:b>
  <c>Вишня</c>
</example>'
;

$sxe = new SimpleXMLElement($xml);

$kids $sxe->children('foo');
var_dump(count($kids));

$kids $sxe->children('foo'TRUE);
var_dump(count($kids));

$kids $sxe->children('my.foo.urn');
var_dump(count($kids));

$kids $sxe->children('my.foo.urn'TRUE);
var_dump(count($kids));

$kids $sxe->children();
var_dump(count($kids));
?>
int(0)
int(2)
int(2)
int(0)
int(1)

Примечания

SimpleXMLElement::children() вернет узел объекта в любом случае, даже если текущий узел не имеет потомков. Используя count() для возвращенного значения, можно узнать о существовании потомков. В PHP 5.3.0 вместо этого можно использовать SimpleXMLElement::count().

Смотрите также

  • SimpleXMLElement::count() - Подсчитывает количество дочерних элементов у текущего элемента
  • count() - Подсчитывает количество элементов массива или чего-либо в объекте