Seite 1 von 3
Frage zu "variablen" Variablen
Verfasst: 15.01.2008 11:25
von LuLa
Hallo,
habe mal eine Frage.
funktioniert natürlich, aber ...
Code: Alles auswählen
for ($i = 0; $i < 3; $i++)
{
$var_[$i] = 'Test ' . [$i];
}
funktioniert nicht. Was habe ich falsch gemacht?
var_'[$i]' und var_"[$i]" habe ich schon ausprobiert, leider ohne Ergebnis.
LG
LuLa
Verfasst: 15.01.2008 11:30
von PhilippK
Das funktioniert schon - die Variablen sind dann im Array $var_ gespeichert.
Wenn du variablen Variablennamen verwenden willst, musst du mit $$ arbeiten und den Variabelnamen in einer Variable speichern:
Code: Alles auswählen
$test = 1;
$name = 'test';
$$name++;
echo $test; // Ausgabe: 2
Gruß, Philipp
Verfasst: 15.01.2008 11:43
von LuLa
Danke für die schnelle Antwort. Aber leider funktioniert es noch nicht.
Code: Alles auswählen
<?php
for ($i = 0; $i < 3; $i++)
{
$var_[$i] = 'Test ' . [$i] . '<br />';
echo $var_[$i];
}
?>
Parse error: syntax error, unexpected '[' in test.php on line 5
Ebensowenig funktioniert das doppete Dollarzeichen, es erscheint dieselbe Fehlermeldung.
Code: Alles auswählen
$$var_[$i] = 'Test ' . [$i] . '<br />';
echo $$var_[$i];
Kannst Du bitte nochmal nachschauen woran es liegt? Die Ausgabe sollte eigentlich
Test 1
Test 2
Test 3
sein. Vielleicht habe ich mein Problem auch undeutlich erklärt. Es kommt mir darauf an, daß ich als Ergebnis drei eigenständige Variablen habe, nämlich $var_1, $var_2 und $var_3.
Verfasst: 15.01.2008 12:52
von gn#36
Das liegt aber in keiner Weise an den $$ oder der Arraykonstruktion sondern einfach nur daran, dass du [$i] nicht einfach so verwenden darfst, sondern das nur in Verbindung mit einem Array eine Bedeutung hat. Wenn du nur den Wert in $i benutzen willst und den nicht als Index für das Array verwenden willst, dann lass die Klammern weg.
Code: Alles auswählen
$$var_[$i] = 'Test ' . [$i] . '<br />';
echo $$var_[$i];
wird übrigens nicht so funktionieren wie du dir das denkst, weil du das Prinzip nicht verstanden hast.
$$var greift auf die Variable zu, deren Name in $var gespeichert ist.
Beispiel:
Code: Alles auswählen
$var = 'var1';
$var1 = 4;
$var2 = 5;
echo $$var; //gibt 4 aus
Diese Methode ist allerdings extrem unübersichtlich, da man dem Code nicht direkt ansieht worauf man gerade zugreift.
Wenn du in der anderen Methode einfach den Syntaxregeln entsprechend
durch
ersetzt, dann sollte auch dieses Beispiel einwandfrei funktionieren. Dass das der Fehler ist geht auch schon aus der Fehlermeldung hervor, schließlich wird eine Klammer bemängelt und nicht z.b. ein Text oder eine Variable.
Verfasst: 15.01.2008 14:02
von LuLa
Danke, aber das hat mir nicht weitergeholfen. Deshalb frage ich mal anders:
wie bekomme ich 300 Variablen die mit 'var_' beginnen und einer aufsteigenden Zahl enden mit der Zeichenkette 'Test' befüllt, ohne 300 mal "$var_i = 'Test';" schreiben zu müssen?
LG
LuLa
Verfasst: 15.01.2008 15:27
von Boecki91
Warum muss es denn umbedingt var_1 bis var_300 sein?
Arrays sind wie für so einen Zweck gemacht
Löse das doch über Arrays:
Code: Alles auswählen
<?php
for ($i = 0; $i < 300; $i++)
{
$var[$i] = "Test";
}
//Was wird wol rauskommen?
echo "<pre>"; // <pre> sorgt für eine "schöne" Ausgabe, für Leute die nicht den Seitenquelltext anschauen können...
var_dump($var);
echo "</pre>";
// Arrays beginnen beim Key 0
?>
So wird das dann aussehen:
Verfasst: 15.01.2008 15:37
von BB-BF-BM
Alternativ (auch wenn ich ebenfalls Arrays vorziehe):
Code: Alles auswählen
for ($i = 1; $i <= 300; $i++)
{
${'var_'.$i} = "Test ".$i;
}
Verfasst: 15.01.2008 15:48
von LuLa
BB-BF-BM hat geschrieben:Alternativ (auch wenn ich ebenfalls Arrays vorziehe):
Code: Alles auswählen
for ($i = 1; $i <= 300; $i++)
{
${'var_'.$i} = "Test ".$i;
}
Funktioniert leider nicht, Fehlermeldung wie oben...
Verfasst: 15.01.2008 15:58
von Boecki91
Und meine Variante?
Funktioniert sie?
Werde ich geschickt ignoriert?

Verfasst: 15.01.2008 16:33
von gn#36
LuLa hat geschrieben:Danke, aber das hat mir nicht weitergeholfen. Deshalb frage ich mal anders:
wie bekomme ich 300 Variablen die mit 'var_' beginnen und einer aufsteigenden Zahl enden mit der Zeichenkette 'Test' befüllt, ohne 300 mal "$var_i = 'Test';" schreiben zu müssen?
LG
LuLa
Vielleicht postest du mal den kompletten Code den du verwendet hast wo es Fehler gab? Ich glaube nämlich nicht dass es an meiner Änderung lag, [$i] ohne Array / Variable ist nämlich außer in einem String an sämtlichen Stellen falsch wo es steht.
Das hier muss funktionieren:
Code: Alles auswählen
for ($i = 1; $i <= 300; $i++)
{
$var = 'var_'.$i;
$$var = "Test ".$i;
}
ich wüsste allerdings trotzdem gerne was du bei meinen Beispielen gemacht hast, denn die sollten ebenfalls richtig sein.