dey: variable Variablennamen

Hallo,

ich glaube irgendwo gesehen zu haben, dass man auch variable Variablennamen durch concatinieren erzeugen kann

$select_date = array ('dd' => 31,'mm' => 12, 'yy' => 10);
$temp_.$select_date['dd']
ergibt $temp_31

Wie funktioniert das?

bydey

--
-- noch immer ein erfolgloser <DIV> Jünger --
  1. hi,

    ich glaube irgendwo gesehen zu haben, dass man auch variable Variablennamen durch concatinieren erzeugen kann

    $select_date = array ('dd' => 31,'mm' => 12, 'yy' => 10);
    $temp_.$select_date['dd']
    ergibt $temp_31

    Wie funktioniert das?

    http://www.php.net/manual/de/language.variables.variable.php

    Aber überlege dir, ob du sowas wirklich brauchst.
    Gerade Einsteiger scheinen oftmals geradezu besessen von dem Gedanken, alles mögliche in "einzelnen Variablen" stehen haben zu wollen - obwohl Arrays oftmals viel komfortabler zu handhaben sind.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo,

      Aber überlege dir, ob du sowas wirklich brauchst.
      Gerade Einsteiger scheinen oftmals geradezu besessen von dem Gedanken, alles mögliche in "einzelnen Variablen" stehen haben zu wollen - obwohl Arrays oftmals viel komfortabler zu handhaben sind.

      Genau! Gut dass Du nochmal drauf hingewiesen hast. :-)

      "Arrays" in PHP stellen die einzige praktikable Möglichkeit dar, eigene Datenstrukturen festzulegen und zu kontrollieren. Da es sich bei den Arrays in PHP aber in Wirklichkeit um Baumstrukturen handelt, sind sie auch laufzeitdynamisch. Man kann also zur Laufzeit des Scriptes Elemente anhängen, löschen, einfügen, umbenennen, usw.

      Man kann die Elemente zählen, Ihre Reihenfolge manipulieren und nach dem Vorhandensein bestimmter Elemente suchen.

      Damit stellen diese varianten Strukturen also schon "variable Variablen" dar.

      LG
      Chris

      1. Hallo,

        noch ein Nachtrag.
        Erscheint mir die richtige Stelle dafür zu sein, noch auf die Superglobalen Arrays und den Umgang damit hinzuweisen:

        Es besteht grundsätzlich keinerlei Anlass dazu, die Arrays $_GET, $_POST, $_COOKIE, usw. im Script erst in "lose" Scriptvariablen umzukopieren oder ein anderes Array daraus zu bilden. Man kann direkt damit arbeiten und auch in diese Arrays hineinschreiben.

        Ich weiß, dass Viele diese Arrays als "schreibgeschützt" ansehen.
        Solange man aber weiß, wann man was mit welcher Variable macht, ist selten eine Rendundanz notwendig.

        LG
        Chris

        1. hi Chris,

          Es besteht grundsätzlich keinerlei Anlass dazu, die Arrays $_GET, $_POST, $_COOKIE, usw. im Script erst in "lose" Scriptvariablen umzukopieren oder ein anderes Array daraus zu bilden.

          Bis hierhin Ack.

          Man kann direkt damit arbeiten und auch in diese Arrays hineinschreiben.

          Das halte ich aber für unsauber.
          Die Namen dieser Superglobalen bezeichnen schon die Herkunft der Werte - also warum sollte ich ihnen irgendwelche "Kuckuckskinder" unterschieben, die aus anderen Quellen stammen?

          Ich weiß, dass Viele diese Arrays als "schreibgeschützt" ansehen.

          Wäre vielleicht sogar besser so.

          Solange man aber weiß, wann man was mit welcher Variable macht, ist selten eine Rendundanz notwendig.

          Die Benennung der Superglobalen dient m.E. mit dazu, dieses Bewusstsein, woher bestimmte Werte stammen, aufrechtzuerhalten.
          Dies zu unterwandern, halte ich für wenig sinnvoll.

          Könntest du Beispiele nennen, wo du das für sinnvoll oder gar erforderlich halten würdest?

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }
          1. hi,

            Könntest du Beispiele nennen, wo du das für sinnvoll oder gar erforderlich halten würdest?

            Gut, eins fällt mir da gerade selber ein:

            Wenn magic_quotes_gpc unglücklicherweise als "on" konfiguriert wäre, könnte ich mir eine Funktion schreiben, die $_GET/$_POST/$_COOKIE durchläuft, alle Inhalte mittels stripslashes() von diesem Unfug befreit - und sie dann wieder unter dem selben Indexnamen in die Arrays zurückschreibt.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
          2. Hallo Wahsaga,

            Könntest du Beispiele nennen, wo du das für sinnvoll oder gar erforderlich halten würdest?

            Ja:

            • Die Wiederentfernung der automatischen Maskierungen
            • Das Hinzufügen von Defaults, wenn der Parameter nicht posted wurde
                (Radios und Checkboxes z.B.)
            • Das Löschen überflüssiger Parameter, soweit es das
                Programmkonzept vorsieht, dass die Anzahl auch positiv variant ist

            da fällt mir bestimmt noch mehr ein.

            All diese Dinge macht man sicher in einer wohlüberlegten Reihenfolge und nicht "Kraut und Rüben".

            Ich stamme noch aus der Zeit der Assembler-Programmierung. Da hat man Blockbuffer so schnell es ging wiederverwandt. Nun sag nicht: heute hat man genügend Speicherplatz. Ich bin bei PHP schon oft genug an die Grenzen gestoßen, denn was nützt es, wenn _ein_ User genug Platz hat, aber es für zwei schon wieder zu eng wird.

            LG
            Chris

            1. hi,

              Nun sag nicht: heute hat man genügend Speicherplatz.

              Würde mir nie in den Sinn kommen :-)

              Ernsthaft: Ja, da gebe ich dir Recht - auch heute noch hat ein Programmierer m.E. die Verantwortung, mit den Ressourcen so verantwortungsvoll wie möglich umzugehen. "Wir hamm's ja" war noch nie eine gute Einstellung.

              Auf deine genannten Beispiele war ich, abgesehen vom Rücknehmen eventueller überflüssiger Maskierungen, so noch nicht gekommen.
              Werde aber mal schauen, ob und wo ich das zukünftig sinnvoll einsetzen kann.

              gruß,
              wahsaga

              --
              /voodoo.css:
              #GeorgeWBush { position:absolute; bottom:-6ft; }
    2. Hallo,

      Aber überlege dir, ob du sowas wirklich brauchst.
      Gerade Einsteiger scheinen oftmals geradezu besessen von dem Gedanken, alles mögliche in "einzelnen Variablen" stehen haben zu wollen - obwohl Arrays oftmals viel komfortabler zu handhaben sind.

      Du hast recht. War gedankenlos von mir.
      Was hat mich da blos geritten!?

      bydey

      --
      -- noch immer ein erfolgloser <DIV> Jünger --
  2. Hallo,

    ich glaube irgendwo gesehen zu haben, dass man auch variable Variablennamen durch concatinieren erzeugen kann

    $select_date = array ('dd' => 31,'mm' => 12, 'yy' => 10);
    $temp_.$select_date['dd']
    ergibt $temp_31

    Wie funktioniert das?

    Das Dollarzeichen weist den Parser an, nicht den Text direkt auszugeben, sondern diesen als Bezeichner aufzufassen. Mittels dieses Bezeichners wird dann in der Variablen- und Funktionentabelle von PHP nachgeschaut, welcher Wert stattdessen benutzt werden soll.

    Wenn man nun vor diesen Wert wiederum einen Dollar setzt, wird auch dieser nicht direkt verwendet, sondern das Spiel beginnt von Neuem.

    Nun sollte es Dir klar werden, wie es funktioniert.

    Außerdem siehe http://de2.php.net/language.variables.variable

    LG
    Chris