Dynamische Variablen (auch Variable Variables genannt) ermöglichen es, den Namen einer Variable zur Laufzeit zusammenzusetzen. Das kann in bestimmten Situationen praktisch sein, etwa wenn Sie eine Anwendung für mehrere Sprachen bereitstellen möchten. In diesem Tutorial zeigen wir Ihnen anhand einfacher Beispiele, wie Sie dynamische Variablen in PHP einsetzen können.
Beispiel:
<?php
/*
* Variable Definieren
*/
$variable_de='dynamische Variable<br>';
$variable_en='dynamic variable<br>';
/*
* Sprache Definieren
*/
$sprache='de';
/*
* dynamische Variable Definieren
*/
$ausgabe='variable_'.$sprache;
/*
* Ausgabe der dynamischen Variable
*/
echo ${$ausgabe};
/*
* Sprache Definieren
*/
$sprache='en';
/*
* dynamische Variable Definieren
*/
$ausgabe='variable_'.$sprache;
/*
* Ausgabe der dynamischen Variable
*/
echo ${$ausgabe};
?>
Ausgabe
Ergebnis:
dynamische Variable
dynamic variable
Erklärung:
Zuerst werden zwei Variablen $variable_de und $variable_en definiert, die jeweils den Text in einer bestimmten Sprache enthalten. In $sprache wird ein Kürzel wie de oder en gespeichert. Daraus setzt $ausgabe = 'variable_' . $sprache; den vollständigen Variablennamen zusammen. Mit ${$ausgabe} greift PHP auf die passende Variable zu und gibt sie per Echo-Befehl aus. Im zweiten Abschnitt des Codes wird das gleiche Prinzip für die englische Sprache wiederholt.
Eine Alternative wäre, die unterschiedlichen Variablen in separate Sprachdateien auszulagern und dann über einen passenden include() Befehl die entsprechende Sprachdatei einzubinden. Alternativ können Sie auch ein mehrdimensionales Array verwenden, nachfolgend noch ein kleines Beispiel.
Beispiel:
<?php
/*
* Definieren eines mehrdimensionalen Array
*/
$sprachen=array(
'de'=>array(
'name'=>'Fahrrad',
'farbe'=>'rot'
),
'en'=>array(
'name'=>'bike',
'farbe'=>'red'
),
);
/*
* Prüfen ob das Array vorhanden ist
*/
if(is_array($sprachen)==true){
foreach($sprachen as $key =>$value){
foreach($value as $kk =>$vv){
/*
* definieren der dynamischen Variablen
*/
$a=$kk.'_'.$key;
/*
* der dynamischen Variablen einen Wert
* zuweisen
*/
${$a}=$vv;
}
}
}
/*
* Deutsche Ausgabe
*/
echo '<i>Deutsche Ausgabe:</i><br>';
echo 'Das '.$name_de.' ist '.$farbe_de.'.';
/*
* Englische Ausgabe
*/
echo '<br><i>Englische Ausgabe:</i><br>';
echo 'The '.$name_en.' is '.$farbe_en.'.';
?>
Ausgabe:
Deutsche Ausgabe:
Das Fahrrad ist rot.
Englische Ausgabe:
The bike is red.
Erklärung:
Im oberen Abschnitt wird in $sprachen ein mehrdimensionales Array mit den Übersetzungen gespeichert. Mit zwei verschachtelten foreach() Schleifen werden daraus dynamische Variablennamen wie $name_de oder $farbe_en erzeugt und mit Werten belegt. Anschließend lassen sich diese Variablen direkt per echo ausgeben.
Hinweis zur modernen PHP-Entwicklung
Dynamische Variablen ($$var) sollten mit Bedacht eingesetzt werden. In modernem PHP sind assoziative Arrays oder Objekte oft die bessere Wahl, weil sie übersichtlicher sind und von der IDE unterstützt werden. Statt ${$ausgabe} können Sie beispielsweise $texte[$sprache] verwenden. Das erfüllt den gleichen Zweck und ist leichter nachvollziehbar.