php5 | function __get($var) | Auf Array zugreifen

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

  • php5 | function __get($var) | Auf Array zugreifen

    Hallo,
    ich wollte es ermöglichen ein Array zurückzugeben.
    einfach:
    $obj_class->array[0];

    Nur habe ich da gerade ein Problem:
    PHP-Code:
        function __get($var)
        {
            if (!isset(
    $this->elemente[$var]))
                return 
    false;
                
            if (
    is_string($this->elemente[$var]))         
                return 
    $this->elemente[$var];
                
            if (
    is_array($this->elemente[$var])){
                echo 
    "Fehler: Es ist ein Array.";
                return 
    $this->elemente[$var];
                }
        } 
    Wie löse ich das am besten, das ich ganz einfach auf ein Array zugreifen kann?
    Gut geraten ist halb gewußt.

  • #2
    Häh? Was ist denn dein Problem?

    Kommentar


    • #3
      Häh? Was ist denn dein Problem?
      Weiß ich auch nicht.
      Wie löse ich das am besten, das ich ganz einfach auf ein Array zugreifen kann?
      Indem du einfach das ganze Array zurückgibst. Im Prinzip kannst du dir die Tests sparen und einfach $this->elemente[$var]; zurückgeben.
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Kommentar


      • #4
        Das Problem ist, das in $this->elemente[$var] noch ein array ist.

        Also $this->elemente[$var][0] und $this->elemente[$var][1] usw.


        Ich wollte in der function __get darauf zugreifen, aber das ist mir nicht gelungen.
        Das ist die stelle in der Funktion wo ich frage is_array();

        Aber denn komme ich nicht weiter.
        Gut geraten ist halb gewußt.

        Kommentar


        • #5
          Also ich habe das jetzt erstmal so gelöst.
          PHP-Code:
              function __get($var)
              {
                  if (!isset(
          $this->elemente[$var]))
                      return 
          false;
                      
                  if (
          is_string($this->elemente[$var]))         
                      return 
          $this->elemente[$var];
                      
                  if (
          is_array($this->elemente[$var])) {            
                      foreach (
          $this->elemente[$var] as $key => $value) {
                          
          $tmp $this->elemente[$var][$key];
                          unset(
          $this->elemente[$var][$key]);
                          return 
          $tmp;
                      }            
                  }
              } 
          Immer wenn ich jetzt mit $obj_class->var darauf zugreife gibt es einen Eintrag nach dem anderen aus.
          Aber meine Lösung ist ja nur provisorisch und kann ja nicht die entgültige Lösung sein.
          $obj_class->var[0] ect. müßte es ja richtig heißen.
          Gut geraten ist halb gewußt.

          Kommentar


          • #6
            PHP-Code:
            class Test {
               public 
            $blubb = array ( 'a' => array ( 1) );

               public function 
            __get $var ) {
                  return 
            $this -> blubb $var ];
               }
            }
                
            $test = new Test ( );
            echo 
            $test -> ]; // Ausgabe: 1 
            Wo ist jetzt dein Problem?
            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

            Kommentar


            • #7
              @tontechniker: das will er sicher nicht, auch wenns geht...

              @ts: Ach so, es geht dir also nicht darum das array zurück zu geben, sondern einzelne Werte.

              dürfte schwierig werden.

              könntest mit optionalen parametern arbeiten:

              echo $obj->__get('hallo',0,'name');

              würde auf $this->elements['hallo'][0]['name'] = 'Theo'; zurück greifen.

              Kommentar


              • #8
                @tontechniker public $blubb = array ( 'a' => array ( 1, 2 ) );
                Nein, so kann ich die Variablen nicht vorhersagen. Das wäre ja leicht.

                @TobiaZ Ja, so dachte ich es zuerst auch. Aber wo ich das probiert hatte gab es eine Fehlermeldung. Ich probiere es nochmal.

                Aber zum Glück weißt du was ich meine.
                Gut geraten ist halb gewußt.

                Kommentar


                • #9
                  Ich brauch garnicht probieren.
                  Habe gerade mal nachgelesen.
                  Der get function kann man nur 1 Parameter übergeben.
                  Son schei*.
                  Also muß ich meine Lösung so lassen wie sie jetzt ist.
                  Gut geraten ist halb gewußt.

                  Kommentar

                  Lädt...
                  X