Ankündigung

Einklappen
Keine Ankündigung bisher.

Array rekursiv bauen?

Einklappen

Neue Werbung 2019

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

  • Array rekursiv bauen?

    Ich möchte gern aus einer XML-Datei ein Array bauen, indem die Tag-Namen die Array-Bezeichner sind und cdata der Inhalt des Arrays. Geht das irgendwie rekursiv, habe bisher nur rekursives auslesen gefunden...

    Beispiel:
    Code:
    <farbe>
      <rgb>
        <red>255</red>
        <green>0</green>
        <blue>0</blue>
      </rgb>
    </farbe>
    
    So soll das Array aussehen:
    
    Array
    (
        [FARBE] => Array
            (
                [RGB] => Array
                    (
                        [RED] => 255
                        [GREEN] => 0
                        [BLUE] => 0
                    )
            )
    )
    Mir ist speziell nicht klar, wie ich die Tiefe erzeugen kann...

  • #2
    Re: Array rekursiv bauen?

    Zitat von Anotherone
    Mir ist speziell nicht klar, wie ich die Tiefe erzeugen kann...
    Mit Rekursion

    Kommentar


    • #3
      kA ob dir das helfen kann:
      PHP-Code:
      <?php
      $array
      ['FARBE'][RGB][RED] = "255";
      $array['FARBE'][RGB][GREEN] = "0";
      $array['FARBE'][RGB][BLUE] = "0";
      $array['FARBE'][CMYK][C] = "0";
      $array['FARBE'][CMYK][M] = "95";
      $array['FARBE'][CMYK][Y] = "91";
      $array['FARBE'][CMYK][K] = "0";
      ?>
      ich weiss nicht mal obs funktioniert

      ansonsten im manual mal die ganzen array Sachen anschauen:
      http://php.benscom.com/manual/de/ref.array.php
      :arrow: [URL="http://tiny.cc/0xlvv"]Wie man Fragen richtig stellt[/URL]

      Kommentar


      • #4
        PHP-Code:
        <?php

        $xml 
        "<farbe>
          <rgb>
            <red>255</red>
            <green>0</green>
            <blue>0</blue>
          </rgb>
        </farbe>"
        ;


        function 
        xmlparse($xml) {
                
        $treffer = array();
                if(
        preg_match_all('#<([\w]+)>(.*)</\1>#sU',$xml,$treffer,PREG_SET_ORDER)) {
                        
        $return = array();
                        foreach(
        $treffer AS $v) {
                                
        $return[$v[1]] = xmlparse($v[2]);
                        }
                        return 
        $return;
                } else {
                        return 
        $xml;
                }
                

        }
        ?>
        <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
        <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
        <head>
        <title></title>
        <meta name="generator" content="Webweaver v1.6.7 [http://webweaver.ws]" />
        </head>
        <body>
        <pre>
        <?php
        print_r
        (xmlparse($xml));
        ?>
        </pre>
        </body>
        </html>

        Kommentar


        • #5
          @Zergling

          @dsmcg Danke, das nützt mir für eine andere Sache was...

          @Buhmann Vielen Dank, das hilft...

          Kommentar

          Lädt...
          X