Dyamische Variablennamen

Vaio82

Erfahrenes Mitglied
Hallo zusammen,

ich habe gerade einen kleinen Burnout... ;)

Mal angenommen ich habe eine $e_1 Variable. Darüber hinaus eine Schleife, die N Inhalte besitzt.

Wie ändere ich die 1 ($e_1) in den Inhalt meiner Zählschleife? Angenommen N = 5, sprich es gibt 5 Durchläufe... Beim ersten ($i == 1) soll er mir $e_1 ausprinten, beim zweiten ($i == 2) soll er mir $e_2 geben usw...

In PHP gab es ja mal solche Connect-Operatoren like: . Aber es geht nicht

$e_."$i"

Hätte da jemand auf Anhieb eine kleine Idee?

Schöne Grüße,
Claus
 
Hallo Nils,

der Ansatz ist schon ganz gut, zwar kann ich mir selbst $e_1 ausgeben lassen, wenn ich bei Deiner Ausgabe das zweite $ lösche, allerdings sind diese Angabe ja nur IN der Variablen $a verfügbar.

Ich könnte die Inhalte aus $a somit nur zur Laufzeit ausprinten, allerdings $e_5 keinen neuen Inhalt zuweisen.

Ich poste mal einen minimalen Teil:

PHP:
$a    =    '$e_'.$i; 
   
   			if(empty($parent->beziehung)){
				SSAddMenuItem ("$parent->name","$PHP_SELF?init=$parent->id&func=$func&lang=$lang", "",null);
			}else{
				$a=SSAddTopLevelMenu("$parent->name ","#");
				$beziehung = $parent->id;
			}

In diesem Teil habe ich Dein Meisterwerk mal probiert, allerdings bleibt $a in jedem Durchlauf identisch.

Anstelle von $a

PHP:
$a=SSAddTopLevelMenu("$parent->name ","#");

sollte da jeweils $e_1 -> $e_5 stehen, wenn $i 5 Inhalte besitzt

Dieser Versuch ging ebenfalls nicht:
PHP:
'$e_'.$i=SSAddTopLevelMenu("$parent->name ","#");
 
Zuletzt bearbeitet:
Wenn du noch das $ vor dem e wegnimmst dann geht's .. so weißt du der Variable nämlich nur
$$e_1 zu .. und das geht so nicht ...
 
die doppelten Dollarzeichen bewirken, dass der Inhalt der Variable a als Variable angesehen werden. Nils hat schon recht. Du kommst entweder nur mit [phpf]eval[/phpf] zu deinem Ziel oder eben so, wie es Nils dir schon zeigte.
Also einfach den Variablennamen in die Variable $a schreiben und dann kannste mit $$a so umgehen, dass es eben die Variable $e_1 - $e_5 wäre. Nur eben nicht das zweite Dollarzeichen vergessen.

edit: Inhalt von $e_5 verändern:
PHP:
$e_1 = 1;
$e_2 = 2;
$e_3 = 3;
$e_4 = 4;
$e_5 = 5;
for($i=1;$i<6;$i++)
{
    $a    =    'e_'.$i;
    if($i == 5) {
        $$a = 'Hello world!';
    }
    echo $$a ."\n";
} 
echo $e_5 . "\n";
//Ausgabe:
//1
//2
//3
//4
//Hello world!
//Hello world!
 
Zuletzt bearbeitet:
Zurück