Как я циклично выполняюсь через объект SimpleXML в PHP

Я имею объект simpleXml и хочу считать данные с объекта, я плохо знаком с PHP и не вполне знаю, как сделать это. Сведения объекта следующие.

Я должен читать [описание] и [часы]. Слова благодарности.

SimpleXMLElement Object (
    [@attributes] => Array (
        [type] => array
    )
    [time-entry] => Array (
        [0] => SimpleXMLElement Object (
            [date] => 2010-01-26
            [description] => TCDM1 data management: sort & upload
            [hours] => 1.0
            [id] => 21753865
            [person-id] => 350501
            [project-id] => 4287373
            [todo-item-id] => SimpleXMLElement Object (
                [@attributes] => Array (
                    [type] => integer
                    [nil] => true
                )
            )
        )
        [1] => SimpleXMLElement Object (
            [date] => 2010-01-27
            [description] => PDCH1: HTML
            [hours] => 0.25
            [id] => 21782012
            [person-id] => 1828493
            [project-id] => 4249185
            [todo-item-id] => SimpleXMLElement Object (
                [@attributes] => Array (
                    [type] => integer
                    [nil] => true
                )
            )
)   )   )

Пожалуйста, помогите мне. Я пробую много материала, но не разбирание в синтаксисе.

6
задан nickf 24 May 2010 в 23:21
поделиться

2 ответа

Очень трудно читать вышеизложенное, если бы вы могли дать нам снимок экрана или указать межстрочный интервал и отступы, это было бы немного лучше. Если у вас есть объект

$xml, который является объектом simplexml, вы можете получить доступ к элементам типа

$xml->element.

Похоже, что это элемент записи времени, в этом случае вы будете циклически просматривать его так:

foreach( $xml->{'time-entry'} as $time_entry ) {
    echo $time_entry->description . "<br />\n";
}
10
ответ дан 9 December 2019 в 22:30
поделиться

Если объект, который вы print_r -ed в вопросе, находится в $ element , то следующий цикл будет повторяться через два времени- элементы entry при распечатке их соответствующих значений description и часов .

foreach ($element->{'time-entry'} as $entry) {
    $description = (string) $entry->description;
    $hours       = (string) $entry->hours;
    printf("Description: %s\nHours: %s\n\n", $description, $hours);
}

Выводит что-то вроде:

Description: TCDM1 data management: sort & upload NFP SubProducers list
Hours: 1.0

Description: PDCH1: HTML
Hours: 0.25

Обратите внимание, что имя элемента time-entry должно быть заключено в фигурные скобки 1 в виде строки, иначе $ element-> time-entry попытается прочитать элемент time и вычесть значение константы, называемой entry , что явно не то, что нам нужно. Кроме того, значения description и часов преобразуются 2 в строки (в противном случае они были бы объектами типа SimpleXMLElement ).

1. См. переменные переменные 2.См. приведение типов

1
ответ дан 9 December 2019 в 22:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: