Array reduzieren

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

  • Array reduzieren

    Hallo ihr

    Ich habe hier ne Menge mehrdimensionaler Arrays.

    schematisch:

    PHP-Code:

    Array
    (
        [
    0] => SimpleXMLElement Object
        
    (
            [@
    attributes] => Array
            (
                [
    selected] => value
            
    )
        )

    Jedoch ist allerdings nur 'value' interessant. Ja richtig, ein mehrdimensionales Array, welches als brauchbaren Inhalt im Endeffekt nur einen einzigen Wert besitzt.
    Hinzu kommt, dass hunderte solcher Arrays vorhanden sind.

    Gibt es eine Möglichkeit, das Array so zu bearbeiten, dass ich den relevanten Wert 'value' später in einer einzigen, ganz normalen Variable habe?

    Evt. ginge das mit array_reduce, jedoch bin ich mir über dessen dazugehörige Funktion um obiges zu erreichen im Unklaren.


    mfg

  • #2
    Auf anhieb würde ich das mit foreach lösen. Bin mir aber nicht sicher, ob es da eine bessere Alternative gibt.
    Für Rechtschreibfehler übernehme ich keine Haftung!

    Kommentar


    • #3
      $selected=$deinxmlobject->xpath("//@selected");
      print_r($selected);
      Slava
      bituniverse.com

      Kommentar


      • #4
        Thx euch beiden

        @Damian: werd mal düber nachdenken

        @Slava: Dann habe ich erneut ein Array, nicht so tragisch aber dann kann ich auch gleich $selected = selected[0]; schreiben, egal wie die xpath Anweisung lautet oder wie das gebildete Array aussieht.

        Kommentar


        • #5
          Original geschrieben von INC.

          @Slava: Dann habe ich erneut ein Array, nicht so tragisch aber dann kann ich auch gleich $selected = selected[0]; schreiben, egal wie die xpath Anweisung lautet oder wie das gebildete Array aussieht.
          Tja
          mehr kann ich für dich nicht tun.
          als alternative kannst du doch alles in einer schleife durchlaufen
          du suchst in deinem simplexmlelement eine attrebute mit diesem xpath.
          wenn ich dich richtig verstanden habe, dann willst du nur wert von attrebute "selected" wissen.
          Es ist bei einem xmlobject nicht ausgeschlossen, dass es mehrere 'selected' attrebuten gibt und deshalb ist das eben ein array der alle werte von selected attrebute hat.
          Wolltest du was anderes haben?
          Zuletzt geändert von Slava; 16.03.2007, 22:47.
          Slava
          bituniverse.com

          Kommentar


          • #6
            Ja ist schon ok, ich meinte ja dass Arrays unsinnig sind, weil ich mit jeder xpath-Anwesiung nur einen einzigen Wert auslese und dafür Arrays zu überdimensioniert sind, aber xpath macht das halt so.

            mir gings eher um Performancegründe, bei 10mb xml Daten hat man da schnell mal über 1000 Arrays, obwohl ich eigentlich garkeine bräuchte wenn xpath das nicht so handhaben würde. Danke nochmal

            Kommentar


            • #7
              für große xml-datenmengen eignet sich sax (bei php auch: expat) oft viel besser (s. http://de.php.net/manual/en/ref.xml.php)

              Ich habe hier ne Menge mehrdimensionaler Arrays.
              das ist eher ein eindimensionales array von objekten.

              Kommentar


              • #8
                Original geschrieben von INC.
                mir gings eher um Performancegründe, bei 10mb xml Daten hat man da schnell mal über 1000 Arrays, obwohl ich eigentlich garkeine bräuchte wenn xpath das nicht so handhaben würde. Danke nochmal
                In diesem fall ist mein Vorschlag mit xpath überhaupt nicht passend.

                also
                1)einfach datei zeile für zeile lesen
                2)nach "selected" suchen
                3)wenn gefunden value auslesen
                4)datei schliessen

                oder wie es von @penizillin vorgeschlagen wurde SAX-parser benutzen
                Slava
                bituniverse.com

                Kommentar

                Lädt...
                X