PHP Arrays & Obejekte verstehen

xb8tom

Gesperrt
ID: 386294
L
30 Januar 2009
644
34
Ich Programmier jetzt schon ziemlich lange , aber ich verstehe Arrays & Obejekte imemrnoch nicht so ganz...

Mit einem normalem Array $hallo['infos']['name'] hab ich kein Problem, da ich es aber jetzt mit einem "SimpleXMLObjekt" zu tuen habe , gibt es einie Probleme , zuersteinmal mein Objekt :


Code:
 SimpleXMLElement Object
(
    [@attributes] => Array
        (
            [UID] => 5641
        )

    [API-Status] => OK
    [API-FehlerCode] => SimpleXMLElement Object
        (
        )

    [Programm] => Array
        (
            [0] => SimpleXMLElement Object
                (
                    [@attributes] => Array
                        (
                            [ID] => 2304
                        )

                    [KID] => 2304
                    [PubAccept] => auto
                    [Programmname] => Telekom Xtra Card
                    [Kategorie] => Handy & Mobilfunk
                    [Beschreibung] => Mit der kostenlosen Telekom Xtra Card erhalten Ihre User 50 Freiminuten sowie 100 Frei-SMS. Desweiteren erhalten bei einer Anmeldung im Callcenter eine Aufladung Ihres Kontos von 3 EUR.
 
Zusätzlich nehmen die User an einer Verlosung für einen einen Mini Cooper teil. 

das alles ohne Mindestguthaben und Vertragslaufzeit und einem kostengünstigen Tarif von nur 5 Cent pro Minute.
 
Profitieren Sie jetzt von einer attraktiven Vergütung!
                    [Bedingungen] => SEM erlaubt 

Doubletten, Fakeeinträge oder Leads über Eintragsdienste, Paidmailer, sonstigen Bonus-Cashbacksystemen bzw. über Coreg und CoSponsoring eingesammelte Daten werden nicht vergütet

Berücksichtigt werden nur valide Daten von Usern aus Deutschland, die über 18 Jahre alt sind.
                    [StartDate] => 2011-08-13 13:00:06
                    [EndeDate] => SimpleXMLElement Object
                        (
                        )

                    [Art] => L
                    [Top] => nein
                    [CookieLifeTime] => 90
                    [MaxVTime] => 45
                    [VerguetungLEAD] => SimpleXMLElement Object
                        (
                            [Standard] => 1.80
                        )

                    [VerguetungSALE] => SimpleXMLElement Object
                        (
                            [Standard] => SimpleXMLElement Object
                                (
                                )

                        )

                    [Bewerbungsstatus] => SimpleXMLElement Object
                        (
                        )

                    [Partnerschaft] => SimpleXMLElement Object
                        (
                        )

                    [FreelinkWMID] => SimpleXMLElement Object
                        (
                        )

                    [FreelinkURL] => SimpleXMLElement Object
                        (
                        )

                ) ...

Mein Ziel ist es mir die Programme in einer Foreach ausgeben zu lassen.

Mein Versuch war jetzt :
PHP:
	foreach($xml as $row) {
  $id = $row['kid'];
  $name = $row['Programmname'];
  $top_kat = $row['parentcategoryid'];
  $pgr_total = $row['amountofprograms'];
}

Aber iwie geht das wohl nicht so einfach , ich habe auch schon nach "PHP OBJEKT" geggolt aber nichts gefunden was mir das richitg erklärt :(
 
hatte auch das echo vergessen:

PHP:
$deinObjekt = new SimpleXMLElement($xmlstr);
foreach($deinObjekt->Programm as $row){
    echo $row->KID
    // usw...
}
 
Hi,

naja du benutzt doch ein Objekt und dann kannst du mit dem Pfeil auf die Objekteigenschaften zugreifen, du hast doch weiter oben die Ausgabe, wo alles steht
 
Achso okay , und wenn ich auf [VerguetungLEAD] Standart zugreifen will ist es dann : $row-> [VerguetungLEAD]->Standart, richitg ? :)
 
Achso ja stimmt , ncoh eine kleine Frage gibt es auch Objekten in Arrays oder anderesrum , vorher erkenen ich sowas in der Print ausgabe ?
 
Naja wie ich erkenne , wann ich wie vorgehen muss um an mein Ergebiss zu kommen , also wie sehe ich da ist ein Array da muss ich mit [] ran , und wann ist es ein Objekt und ich muss mit -> ran
 
steht immer dahinter, was es ist:

Code:
SimpleXMLElement Object
(
    [@attributes] => Array // Array
        (
            [UID] => 5641
        )

    [API-Status] => OK
    [API-FehlerCode] => SimpleXMLElement Object // Objekt
        (
        )
)
 
Achso stimmt @attributes ist ja das Array , also muss das was da drinnen ist in [] und wenn ich API-Status haben will ist es $xml->API-Status hoffe das ist jetzt richitg xD
 
Hey habe gerade bisschen getetstet und komem auch prima klar , nur iwie kommt bei : $row->@attributes['id']; nen Syntax error
 
Ich habe gerade nicht reingeschaut, aber in meinen Bookmarks habe ich seit laaanger Zeit einen Link zum Thema OOP (Objektorientierte Programmierung -> Objekte :p) in PHP5: https://www.peterkropff.de/site/php/oop.htm

Wenn es das Tutorial ist was ich im Kopf habe, erklärt das alles ganz gut ;)


Zu deinem derzeitigen Problem:
Wenn du auf die Attribute deines XML-Knoten eingehen willst, musst du mit der Methode attributes() arbeiten.

Ähm.. ohne groß nachzuschauen, lief das glaube ich so ab:
PHP:
$attributes = $xml->attributes();
$id = $attributes['id'];
 
So soweit läuft alels gut mit dem gelernten , jetzt stoße ich aber wieder auf ein Problem :

Das ist meine XML:

https://api.zanox.com/xml/2011-03-01/programs/categories?connectid=580599047DF8F5311043

Ich geh da momentan ran mit :

PHP:
       foreach($xml->categories->category as $row) {
      $i ++;
    $katname = $row[$i];
    echo $katname;
    }
Den Katname bekomem ich auch raus , nur brauche ich die ID dazu auch und das will iwie nicht in dem ich $i hochcounte
 
Zuletzt bearbeitet: