Dynamische Variablennamen in PHP

Heute bin ich über folgende Problemstellung gestoßen: Eine gegebene Funktion gibt eine Reihe von Variablen zurück, die einen fortlaufenden Zähler im Namen haben. Der Anfang des Variablennamens ist immer gleich, nur der letzte Teil ist dynamisch. Wie kann man nun die Variablen bearbeiten, ohne alle möglichen Namenskombinationen statisch abzufragen?

Ein dynamischer Variablenname setzt sich also aus mindestens einem variablen Teil zusammen und Bedarf deswegen in PHP besonderer Beachtung. Mit der normalen Variablendeklaration:

$variable = “inhalt”;

kommt man hier nicht weiter. Aber in PHP sind dynamische Variablennamen auch kein Problem. Mit folgender Syntax:

${variable.$dynamisch} = “inhalt”;

Kann der Variablenname dynamisch zusammengesetzt werden.

Eigentlich recht simpel und mir bis heute unbekannt.

Dieser Beitrag wurde unter Code, Webmaster veröffentlicht. Setze ein Lesezeichen auf den Permalink.

27 Antworten auf Dynamische Variablennamen in PHP

  1. Markus sagt:

    Herzlichen Dank für diesen Beitrag. Hat mir gerade sehr weitergeholfen. Kannte bisher nur die Variante $$variablenname=”inhalt”;
    Die versagt aber natürlich sobald man dynamische und konstante Namensbestandteile mischen muß.

    Gruß und frohe Ostern,
    Markus

  2. Vaio sagt:

    Mensch, da ärrgert man sich seit Jahren rum, baut die größten Redundanzen ein und dann sowas.

    Ich danke Dir sehr herzlich.

  3. stone sagt:

    Klasse!
    Genau das habe ich gesucht!!!
    Vielen Dank dafür

  4. NaN sagt:

    super! das hab ich gesucht!

  5. Na Mann! Klasse. Da hab ich ich weiss nicht wielange schon nach gesucht. Tolle Seite. Weiter so.

  6. Creo sagt:

    Jedesmal wieder muss ich nachsehen wenn ich ein paar Wochen lang nichts damit gemacht hab …

    und jedesmal verschlägt mich mein Suchbegriff im Google hier her :)

    thx

  7. Jojo sagt:

    Super, danke!!!

    In der einschlägigen Literatur sucht man sich nach sowas die Finger wund und findet doch nur nichts.

  8. Marco sagt:

    Vielen Dank hierfür, über Google gefunden, wird mir sicherlich mal weiterhelfen!

    Marco.

  9. Johannes sagt:

    Danke sehr für diesen Tipp.
    Das hat mir etliche Code-Zeilen erspart :)

  10. Thomas sagt:

    Klasse Sache. Habe den Eintrag über Google gefunden! Danke für die Arbeit.

  11. Markus sagt:

    Super!!! Das haben wir gesucht.Danke

  12. Jannik sagt:

    Eintrag in g***** dynamische variablename+php und schwups kam das Ergebnis :)

    Script ist jetzt um 1/4 geschrumpft xD

  13. Chris sagt:

    Danke, genau das habe ich gescht! Klasse!

  14. Tom sagt:

    Wunderbar!

  15. antra sagt:

    vielen dank! genau das was ich brauche ^^

  16. Chris sagt:

    Was andere mit seitenlangen Erklärungen nicht rüberbringen können, wird hier kurz und knapp perfekt beschrieben.
    Hat mir extrem weitergeholfen.
    Danke!

  17. Ruby sagt:

    Vielen Dank für diesen Beitrag!
    Sehr hilfreich!

  18. Mavman sagt:

    Wie viele Stunden mich dieses Problem schon gekostet hat…
    ich bin dir so unendlich dankbar für diese Erleuchtung :)

  19. mukki182 sagt:

    Danke für diesen Beitrag, hat mir weiteres Suchen erspart :)

  20. Holger sagt:

    Hallo,

    erstmal klasser Beitrag !
    Funktioniert aber nicht mit Objectreferenzen:
    ${obj_Sonderangebot->beschreibung.$_SESSION['ses_sprache']};
    Folgender Fehler wird ausgegeben:
    unexpected T_OBJECT_OPERATOR
    Vielleicht überseh ich aber auch was ;-)

    Grüße

  21. Stefan sagt:

    @Holger: Dir fehlt ein $ vor dem obj_Sonderangebot

    @all: ever heard of arrays? :O

  22. Emil sagt:

    Klasse gemacht! Vielen Dank für den Beitrag. Geht das gleiche auch in JAVA (wie auch immer) ?

    LG Emil

  23. emasch sagt:

    Das hört sich echt super an, aber leider hab ich das noch nicht mit ner Session variable geschafft.

    Das soll ungefähr so aussehen $_SESSION['$contentFromDB'] = $nochmehr content.

    Mit dem Code unten funktioniert das aber irgendwie nicht. Könnt ihr mir helfen?

    ${_SESSION[.$fetch['id'].]}=$fetch['mehr'];

  24. Daniel sagt:

    $new_var = ${text1.$dynvar.text2}; ==> funktioniert bei mir nicht…

    Fehlertyp: Use of undefined constant text1 – assumed ‘text1′

    so gehts dann:

    $dynvar = “hallo”;

    $new_var = ${“text1″.$dynvar.”text2″};

    so nimmt dann $new_var den Inhalt der Variablen $text1hallotext2 an,sofern diese existiert.

  25. Erek sagt:

    Danke für diesen Tipp =)

    Hat mir sehr geholfen =)

  26. Benno sagt:

    $menge = ${‘_POST["sent_menge'.$test.'"]‘}; ==> funktioniert bei mir nicht…
    $test ist eine Zählvariable und das ganze ist in einer Schleife eingebaut.
    Ich bekomme keine Fehlermeldung, aber auche keine Inhalte. Über phpinfo()
    kann ich sie aber sehen!
    Kann mir jemand helfen!!!???