Nasıl PHP bir SimpleXMLElement nesnesi üzerinden I döngü yapmak

2 Cevap php

Ben bir SimpleXML nesnesi var ve nesne veri okumak istiyorum, ben PHP için yeni ve dont oldukça bu nasıl yapılacağını biliyorum. Aşağıdaki gibi nesne ayrıntıları vardır.

I [açıklama] ve [saat] okumak gerekir. Teşekkür ederim.

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

Lütfen bana yardımcı olun. Ben bir sürü şey dener, ancak sözdizimi hakkını almıyor.

2 Cevap

It's really hard to read the above, if you could give us a screen shot or give line spacing and indents, that would be a bit better If you have an object

Bir SimpleXMLElement nesne $ xml, sizin gibi öğeleri erişebilirsiniz

$xml->element.

O zaman girişe bir unsuru gibi görünüyor, bu durumda yapacağınız bu gibi döngü yoluyla:

foreach( $xml->{'time-entry'} as $time_entry ) {
    echo $time_entry->description . "<br />\n";
}

Eğer kendi {[(baskı yaparken, söz size print_r-ed iki time-entry elemanları üzerinde $element sonra aşağıdaki hususlar döngü içinde olan nesne 3)]} ve hours değerleri.

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

Çıkışlar gibi bir şey:

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

Description: PDCH1: HTML
Hours: 0.25

time-entry eleman ismi kaşlı sarılmış olması gerektiğini unutmayın 1 bir dize olarak beri aksi $element->time-entry time okumaya çalışırdım eleman ve ne istediğimizi açıkça değil entry hangi adında bir sabitin değerini çıkarın. Ayrıca, description ve hours değerleri 2 dizelere dökme (aksi türü nesneleri olur SimpleXMLElement).

1. See variable variables 2. See type casting