Objekt, Referenz, Array

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Objekt, Referenz, Array

    Hi

    Ich hatte mir mal vor kurzem einen XML-Reader gebastelt. Dieser hat die XML-Tags als mehrdimensionales Array zurückgegeben. Heute habe ich mitbekommen das der Reader nicht richtig funktioniert. Deshalb wollte ich ihn so umschreiben, dass er wie bei simple_xml ein Objekt zurückgibt.

    Nun bin ich aber auf folgendes Problem gestoßen.

    Ich kann keine Arrays in den Objekten bilden. Es kommt immer der Fehler
    Cannot use [] for reading in bla,bla

    PHP-Code:

    //Erstelle die Ebenen
    if (!empty($tagContent))
    {
         
    #Mit dem Array funktioniert es
         #$even[$evenCount][$tagName][] = $tagContent;
         
         #So funktioniert es die Tags gibt es dann aber nur ein Mal
         
    $even[$evenCount]->$tagName $tagContent;

         
    #So sollte es sein, funktioniert aber nicht
         #$even[$evenCount]->$tagName[] = $tagContent;

    }
    else
    {
          
    #Mit dem Array funktioniert es
          #$even[$evenCount+1] = & $even[$evenCount][$tagName][];
          
          #So funktioniert es die Tags gibt es dann aber nur ein Mal
          
    $even[$evenCount]->$tagName = new XMLElement;
          
    $even[$evenCount+1] = & $even[$evenCount]->$tagName;

          
    #So sollte es sein, funktioniert aber nicht
          #$even[$evenCount]->$tagName = new XMLElement;
          #$even[$evenCount+1] = & $even[$evenCount]->$tagName[];


    Kann mir da einer weiter helfen?

    Mfg Akkie
    Zuletzt geändert von ; 26.05.2005, 21:52.

  • #2
    $tagName[] = $wert

    hängt dem Array $tagName einen Wert an; $tagName[] hat also nur als left hand value Sinn.


    und das sollte auch einen parse error geben:

    $warbisherobjekt = [color=#ff0000]&[/color] $anderesobjekt->member;
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      So funktioniert es.

      PHP-Code:
      //Erstelle die Ebenen
      if (!empty($tagContent))
      {
           
      $even[$evenCount]->{$tagName}[] = $tagContent;

      }
      else
      {
            
      $even[$evenCount+1] = & $even[$evenCount]->{$tagName}[];


      Die Bildung des Arrays als Attribut in dem Objekt war falsch. Ich habe immer einen String gebildet.

      Mfg Akkie

      Kommentar


      • #4
        öhm ... = & ... richtig, Pointer

        ... aber ob deine Lösung wirklich funzt?
        schon mal in den else-Zweig geraten?
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          Ja das funktioniert.

          Im Else-Zweig wird wenn ein neuer Tag aufgeht eine Referenz auf das Attribut des Objekts erstellt. Das gibt keine Probleme.

          $even[0] ist aber auch eine Referenz auf $this->xmlElement

          Ohne diese Vorgehen kann auch keine Struktur erstellt werden

          PHP-Code:
          modul
                
          ->   variables
                                
          -> name
                                
          -> author
                 
          -> sql
                                
          -> create
                                
          -> insert 
          usw...

          Mfg Akkie

          Kommentar

          Lädt...
          X