Sven Rautenberg: Variablennamen dynamisch ändern?

Beitrag lesen

Moin!

Der Vorschlag von Christian löst dein Problem wunderbar.

nun soll die anhand der $page folgende VARs gefüllt werden:

$ist[titel]
$ist[text]
$ist[bild]

Ganz wichtig: Immer Anführungszeichen um die Indices des Arrays setzen.

also:
if ($page == fussball) {
 $ist[titel]= $fussball[titel]
 $ist[text] = $fussball[text]
 $ist[bild] = $fussball[bild]
}
elseif ($page == tennis) {
 $ist[titel]= $tennis[titel]
 $ist[text] = $tennis[text]
 $ist[bild] = $tennis[bild]
}

Wenn du Christians mehrdimensionales Array benutzt. dann hast du - zuerst nur umgesetzt in deinen Code - sowas hier:
if ($page == "fussball") {
  $ist['titel'] = $werte['fussball']['titel']
  $ist['text']  = $werte['fussball']['text']
  $ist['bild'] = $werte['fussball']['bild']
}
elseif...

Dasselbe für "tennis" und "golf".

Statt jetzt immer noch tausend ifelseif-Konstrukte zu haben, kannst du die schon mal in der ersten Stufe vereinfachen:

In $page steht dein Bereich drin:

$ist['titel'] = $werte[$page]['titel']
$ist['text']  = $werte[$page]['text']
$ist['bild'] = $werte[$page]['bild']

Fertig. Indem der Wert in $page und in der ersten eckigen Klammer identisch sind, mußt du keine Unterscheidung mehr machen.

Dumm nur, dass du immer noch jeden Wert einzeln übertragen mußt. Doch auch das geht einfacher.

$ist = $werte[$page]

Fertig. Der Inhalt von $ist soll ja ein eindimensionales Array sein. Der Inhalt von $werte['fussball'] ist auch ein eindimensionales Array. PHP kennt nämlich gar keine zweidimensionalen Arrays, sondern nur eindimensionale Arrays, die wieder eindimensionale Arrays enthalten. Das hat einige Vorteile. Ob es Nachteile hat, weiß ich nicht, ich bin noch über keinen gestolpert.

Als dritte Stufe würde ich dann vorschlagen, diese simple Wertzuweisung auch noch zu eliminieren, und einfach überall dort, wo du jetzt die Variable $ist verwendest, einfach $werte[$page] zu benutzen. Suchen/Ersetzen hilft.

- Sven Rautenberg