Я имею объект 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
)
)
) ) )
Пожалуйста, помогите мне. Я пробую много материала, но не разбирание в синтаксисе.
Очень трудно читать вышеизложенное, если бы вы могли дать нам снимок экрана или указать межстрочный интервал и отступы, это было бы немного лучше. Если у вас есть объект
$xml, который является объектом simplexml, вы можете получить доступ к элементам типа
$xml->element.
Похоже, что это элемент записи времени, в этом случае вы будете циклически просматривать его так:
foreach( $xml->{'time-entry'} as $time_entry ) {
echo $time_entry->description . "<br />\n";
}
Если объект, который вы 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.См. приведение типов